Das Verhalten des Operators == hängt davon ab, wie die Variable, auf die Sie es anwenden, deklariert wurde (nicht die Klasse des Objekts, ich füge ein Beispiel hinzu).
Für Werttypen werden ihre Werte verglichen.
Für Referenztypen a == b gibt true zurück, wenn a dasselbe Objekt wie b ist, es sei denn, der Operator == wurde überladen. Nicht überschrieben, wie andere sagten, Sie können Operatoren in C# nicht überschreiben, weil sie nicht virtuell sind.
object obj_a, obj_b; string str_a, str_b;
str_a = "ABC";
str_b = new string("ABC".ToCharArray());
obj_a = str_a;
obj_b = str_b;
Console.WriteLine("str_a == str_b = {0}", str_a == str_b); // in string == operator is overloaded
Console.WriteLine("str_a.Equals(str_b) = {0}", str_a.Equals(str_b)); // string overrides Object.Euqals
Console.WriteLine("obj_a == obj_b = {0}", obj_a == obj_b); // in object == operator is not overloaded
Console.WriteLine("obj_a.Equals(obj_b) = {0}", obj_a.Equals(obj_b)); // Object.Equesl is virtual and overridden method from string will be executed.
Console.ReadKey();
Die Ausgabe dieses Programms ist
str_a == str_b = True
str_a.Equals(str_b) = True
obj_a == obj_b = False
obj_a.Equals(obj_b) = True
Nur eine kurze Info: Wenn Sie == überlasten, müssen Sie auch implementieren =!. Das gleiche gilt für <= and > =. – Tarik