J'ai la classe de base Class1 et une classe dérivée2. Je crée deux instances de class2 mais définies comme class1. Mon problème est que je ne peux pas faire une comparaison générique entre ces objets. Voici un exemple:Opérateur statique == ne pas détecter la méthode sur-estimée
public class Class1
{
public int Property1 = 0;
}
public class Class2 : Class1
{
public int Property2 = 0;
public static bool operator ==(Class2 c1, Class2 c2)
{
return c1.Property2 == c2.Property2;
}
public static bool operator !=(Class2 c1, Class2 c2)
{
return c1.Property2 != c2.Property2;
}
}
public class Class3 : Class1
{
public int Property3 = 0;
}
static void Main(string[] args)
{
Class1 obj1 = new Class2();
Class1 obj2 = new Class2();
if (obj1 == obj2)
{
Console.WriteLine("Yes !!! The two objects are equal!");
}
else
{
Console.WriteLine("The two objects are not equal.");
}
}
si je change la ligne:
if (obj1 == obj2)
pour:
if ((Class2)obj1 == (Class2)obj2)
tout est bien, mais si obj1 et obj2 sont Class3 j'obtiens l'erreur
Comment puis-je le résoudre?
Merci
Crandel
Essayez-vous de faire un comparateur de valeur, puisque C# prvoide référence standard == automatiquement. – rerun
Voulez-vous dire «surchargé» ou «surchargé»? Overrated signifie autre chose. Quelle erreur obtenez vous? – Oded
autant que je sache, les méthodes statiques sont surchargées et non surchargées. Peut-être que je m'attends à un résultat dépassé: S. Je ne l'essaye pas vraiment, mais je suppose une erreur de cast – Crandel