NullReferenceException

NullReferenceException

# NullReferenceException erklärt

Ein NullReferenceException wird ausgelöst, wenn Sie versuchen, auf ein nicht statisches Mitglied (Eigenschaft, Methode, Feld oder Ereignis) eines Referenzobjekts zuzugreifen, aber es ist null.

Car myFirstCar = new Car();
Car mySecondCar = null;
Color myFirstColor = myFirstCar.Color; // No problem as myFirstCar exists / is not null
Color mySecondColor = mySecondCar.Color; // Throws a NullReferenceException 
// as mySecondCar is null and yet we try to access its color.

Das Debuggen einer solchen Ausnahme ist ganz einfach:In der Zeile, in der die Ausnahme geworfen wird, müssen Sie nur vor jedem '. nachsehen ' oder '[ ' oder in seltenen Fällen '( '.

myGarage.CarCollection[currentIndex.Value].Color = theCarInTheStreet.Color;

Woher kommt meine Ausnahme?Entweder:

  • myGarage ist null
  • myGarage.CarCollection ist null
  • currentIndex ist null
  • myGarage.CarCollection[currentIndex.Value] ist null
  • theCarInTheStreet ist null

Im Debug-Modus müssen Sie nur Ihren Mauszeiger auf jedes dieser Elemente setzen und schon finden Sie Ihre Nullreferenz. Dann müssen Sie verstehen, warum es keinen Wert hat. Die Korrektur hängt ganz vom Ziel Ihrer Methode ab.

Haben Sie vergessen, es zu instanziieren/initialisieren?

myGarage.CarCollection = new Car[10];

Sollten Sie etwas anderes tun, wenn das Objekt null ist?

if (myGarage == null)
{
    Console.WriteLine("Maybe you should buy a garage first!");
}

Oder vielleicht hat Ihnen jemand ein Null-Argument gegeben und sollte nicht:

if (theCarInTheStreet == null)
{
    throw new ArgumentNullException("theCarInTheStreet");
}

Denken Sie in jedem Fall daran, dass eine Methode niemals eine NullReferenceException auslösen sollte. Wenn ja, bedeutet das, dass Sie vergessen haben, etwas zu überprüfen.