Angenommen, ich habe eine Methode:
public void DoSomething(ISomeInterface someObject)
{
if(someObject == null) throw new ArgumentNullException("someObject");
someObject.DoThisOrThat();
}
Ich bin darauf trainiert zu glauben, dass das Werfen von ArgumentNullException
"richtig" ist, aber ein Fehler "Objektreferenz nicht auf eine Instanz eines Objekts festgelegt" bedeutet, dass ich einen Fehler habe.
Warum?
Ich weiß, dass, wenn ich den Verweis zwischengespeichert habe someObject
und später verwende, es besser ist, bei der Übergabe auf Ungültigkeit zu prüfen und früh zu scheitern. Wenn ich es jedoch in der nächsten Zeile dereferenziere, warum sollten wir dann die Überprüfung durchführen? Es wird auf die eine oder andere Weise eine Ausnahme auslösen.
Bearbeiten :
Mir ist gerade in den Sinn gekommen ... Kommt die Angst vor dereferenzierten Null aus einer Sprache wie C ++, die nicht auf Sie prüft (dh es wird nur versucht, eine Methode am Speicherort Null + Methodenoffset auszuführen)?