object == null ?
-
Hallo
irgendwie ist es komisch mit den gleichheitsoperatoren.
wenn ich zB sowas habe:public override bool Equals(object o) { MeinObject right = o as MeinObject; if ( right != null ) { ... } ... } public static bool operator ==(Vector left, Vector right) { return left.Equals(right); } public static bool operator !=(Vector left, Vector right) { return !left.Equals(right); }
wenn jetzt ich zwei MeinObject vergleiche, dann wird Equals(object) aufgerufen, in Equals wird zuerst der Operator == mit (right, null) aufgerufen. der ruft wieder Equals() mit (null) auf, dann ruft Equals wieder den Operator == mit (null, null) auf, was zu einer exception führt, weil jetzt left == null ist.
oder was anderes:public static bool operator ==(Vector left, Vector right) { if ( left == null ) return false; return left.Equals(right); } public static bool operator !=(Vector left, Vector right) { return !left.Equals(right); }
jetzt gibts eine Endlosschleife im Operator ==.
wie ist also die richtige Verwendung von den beiden operatoren ? Irgendwie muss ich doch auf null prüfen können, ohne das meine überladenen Operatoren aufgerufen werden ?
-
Wenn du die == und != Operatoren überladen hast, kannst du die Identität zweier Objekte noch immer über Object.ReferenceEquals() vergleichen.