Auf Null in == override prüfen

8

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.

%Vor%

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?

    
Stephan 13.05.2015, 19:27
quelle

3 Antworten

9

Sie suchen nach der Funktion ReferenceEquals() , die direkt vergleicht und die Überlastung Ihres Operators umgeht.

    
SLaks 13.05.2015, 19:28
quelle
2

Zusätzlich zu dem, was SLaks gesagt hat, möchten Sie wahrscheinlich auch true zurückgeben, wenn beide gleich null sind. Also, so:

%Vor%     
Dan Bryant 13.05.2015 19:33
quelle
1

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%     
Jeroen Vannevel 13.05.2015 20:07
quelle

Tags und Links