Zoeken…


NullReferenceException uitgelegd

Een NullReferenceException wordt gegenereerd wanneer u probeert toegang te krijgen tot een niet-statisch lid (eigenschap, methode, veld of gebeurtenis) van een referentieobject, maar dit is 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.

Om zo'n uitzondering te debuggen, is het vrij eenvoudig: op de regel waar de uitzondering wordt gegooid, moet je gewoon voor elke kijken ' . 'of' [ ', of in zeldzame gevallen' ( '.

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

Waar komt mijn uitzondering vandaan? Een van beide:

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

In de foutopsporingsmodus hoeft u alleen uw muiscursor op elk van deze elementen te plaatsen en vindt u uw nulreferentie. Wat je dan moet doen, is begrijpen waarom het geen waarde heeft. De correctie hangt volledig af van het doel van uw methode.

Ben je vergeten het te instantiëren / initialiseren?

myGarage.CarCollection = new Car[10];

Moet je iets anders doen als het object nul is?

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

Of misschien heeft iemand je een nulargument gegeven en was het niet de bedoeling om:

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

Onthoud in elk geval dat een methode nooit een NullReferenceException mag opleveren. Als dit het geval is, betekent dit dat u bent vergeten iets te controleren.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow