Ich habe Basisklasse Class1 und eine abgeleitete Klasse2. Ich erstelle zwei Instanzen von class2, aber definiert als class1. Mein Problem ist, dass ich keinen generischen Vergleich zwischen diesen Objekten machen kann. sind hier ein Beispiel:Statischer Operator == nicht überbewertete Methode
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.");
}
}
wenn ich die Zeile:
if (obj1 == obj2)
für:
if ((Class2)obj1 == (Class2)obj2)
alles in Ordnung ist, aber wenn obj1 und obj2 Class3 sind ich Fehler
Wie kann ich es lösen?
Danke
Crandel
Versuchen Sie, einen wertebasierten Vergleich seit C# prvoide standard reference == automatisch durchzuführen. – rerun
Meinen Sie "überladen" oder "außer Kraft gesetzt"? Überbewertet bedeutet etwas anderes. Welchen Fehler bekommst du? – Oded
Soweit ich verstehe statische Methoden sind überlastet und nicht überschrieben. Vielleicht erwarte ich ein übersteuertes Ergebnis: S. Ich versuche es nicht wirklich, aber ich nehme an, dass ein Cast-Fehler – Crandel