411 Stimmen

Was passiert in C#, wenn Sie eine Erweiterungsmethode für ein Null-Objekt aufrufen?

Wird die Methode mit einem Nullwert aufgerufen oder wird eine Nullreferenz-Ausnahme ausgelöst?

MyObject myObject = null;
myObject.MyExtensionMethod(); // <-- is this a null reference exception?

Wenn dies der Fall ist, werde ich nie brauchen, um meine "this"-Parameter für null überprüfen?

4voto

Jaider Punkte 13198

myObject.MyExtensionMethod(); wird niemals eine Null-Referenz-Ausnahme auslösen, wenn myObject ist null... ABER es wird eine Exception ausgelöst, wenn MyExtensionMethod() behandelt Null nicht richtig .

https://dotnetfiddle.net/KqwLya

3voto

Fredrik Leijon Punkte 2802

Die extensionmethod ist statisch, so dass, wenn Sie nicht auf alles, was zu diesem MyObject es sollte kein Problem sein, ein schneller Test sollte es überprüfen :)

0voto

ruslander Punkte 3729

Es gibt ein paar goldene Regeln, wenn Sie wollen, dass Ihr Text lesbar und vertikal ist.

  • eine wichtige Aussage von Eiffel besagt, dass der spezifische Code, der in einer Methode gekapselt ist, gegen eine bestimmte Eingabe funktionieren sollte, dass der Code funktionsfähig ist, wenn einige Vorbedingungen erfüllt sind und eine erwartete Ausgabe gewährleistet ist

In Ihrem Fall - DesignByContract ist kaputt ... Sie werden eine Logik auf einer Null-Instanz ausführen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X