Im folgenden C# -Snippet überschreibe ich die ==
-Methode. _type
ist eine Nummer des Typs short
. Also ich sage eigentlich, dass zwei WorkUnitType
s gleich sind, wenn diese beiden short
s gleich sind.Auf Null prüfen in == überschreiben
public static bool operator ==(WorkUnitType type1, WorkUnitType type2)
{
if (type1 == null || type2 == null)
return false;
return type1._type == type2._type;
}
Weil R # warnt mich, und es ist völlig klar, warum, dass type1
/type2
möglicherweise null sein könnte, ich versuche, über das mit der if
Aussage zu fangen.
Jetzt bekomme ich eine StackOverflowException
, die völlig Sinn macht, weil ich tatsächlich die Überschreibung aufrufen.
Frage: Wie schreibe ich diese Methode "richtig". Wie kann ich den Fall erfassen, dass type1
oder type2
null
sein können?
Meine beste Vermutung: Vielleicht bin ich nur ==
hier mißbrauchen und die Überprüfung auf Gleichheit sollte mit der Equals
Überschreibung erfolgen. Aber ich denke immer noch, dass das Problem existiert. Wo ist mein Denkfehler?
ich nicht wusste, dass 'ReferenceEquals' existiert. Das ist eigentlich die Antwort. Vielen Dank. – Stephan