Im folgenden C # -Snippet überschreibe ich die Methode ==
. _type
ist eine Zahl vom Typ short
. Ich sage also, dass zwei WorkUnitType
s gleich sind, wenn diese beiden short
s gleich sind.
Weil R # mich warnt, und es ist völlig klar, warum das type1
/ type2
möglicherweise null sein könnte. Ich versuche das mit der if
Anweisung oben zu verstehen.
Jetzt bekomme ich StackOverflowException
, was total Sinn macht, weil ich eigentlich die Überschreibung anrufe.
Frage: Wie schreibe ich diese Methode "richtig". Wie kann ich den Fall erfassen, dass type1
oder type2
null
sein kann?
Meine beste Vermutung: Vielleicht benutze ich hier ==
einfach und die Überprüfung auf Gleichheit sollte mit dem Equals
override erfolgen. Aber ich denke immer noch, dass das Problem existiert. Wo ist mein Denkfehler?
Zusätzlich zu dem, was SLaks gesagt hat, möchten Sie wahrscheinlich auch true zurückgeben, wenn beide gleich null sind. Also, so:
%Vor% Der Vollständigkeit halber: Sie können die beiden Argumente auch in object
umwandeln. Dies verwendet die Implementierung wie in object
definiert und nicht Ihre benutzerdefinierte.
Im Code:
%Vor%Tags und Links c#