C# Language
NullReferenceException
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
isnull
-
myGarage.CarCollection
isnull
-
currentIndex
isnull
-
myGarage.CarCollection[currentIndex.Value]
isnull
-
theCarInTheStreet
isnull
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.