84 votes

Vérifier si l'objet est du même type

Bonjour, j'ai besoin de savoir comment vérifier si l'objet du même type en C#.

Scénario:

 class Base_Data{}

class Person : Base_Data { }
class Phone  : Base_data { }

class AnotherClass
{
   public void CheckObject(Base_Data data)
   {
         if (data.Equals(Person.GetType()))
         { //<-- Visual Studio 2010 gives me error, says that I am using 'Person' is a type and not a variable.

        }
    }
}

2voto

Hemaolle Points 512

L'intention de la question est un peu floue mais j'ai trouvé cette question où je cherchais un moyen de vérifier si 2 objets sont du même type. Voici ma solution pour cela et quelques tests qui réussissent tous:

 using NUnit.Framework;

[TestFixture]
public class TypeEqualityChecks
{
    class Base_Data { }

    class Person : Base_Data { }
    class Phone  : Base_Data { }

    class AnotherClass
    {
        public static bool CheckObjects(Base_Data d1, Base_Data d2) {
            return d1.GetType() == d2.GetType();
        }
    }
    
    [Test]
    public static void SameTypesAreEqual() {
        Base_Data person1 = new Person();
        Base_Data person2 = new Person();
        Assert.IsTrue(AnotherClass.CheckObjects(person1, person2));
    }
    
    [Test]
    public static void DifferentActualTypesAreNotEqual() {
        Base_Data person = new Person();
        Base_Data phone = new Phone();
        Assert.IsFalse(AnotherClass.CheckObjects(person, phone));
    }
    
    [Test]
    public static void BaseTypeAndChildTypeAreNotEqual() {
        Base_Data baseData = new Base_Data();
        Base_Data person = new Person();
        Assert.IsFalse(AnotherClass.CheckObjects(baseData, person));
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X