Sök…


NullReferenceException förklaras

En NullReferenceException kastas när du försöker komma åt en icke-statisk medlem (egenskap, metod, fält eller händelse) för ett referensobjekt men det är noll.

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.

För att felsöka ett sådant undantag är det ganska enkelt: på raden där undantaget kastas måste du bara titta före varje ' . 'eller' [ ', eller vid sällsynta tillfällen' ( '.

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

Var kommer mitt undantag ifrån? Antingen:

  • myGarage är null
  • myGarage.CarCollection är null
  • currentIndex är null
  • myGarage.CarCollection[currentIndex.Value] är null
  • theCarInTheStreet är null

I felsökningsläge behöver du bara placera muspekaren på alla dessa element och du hittar din nollreferens. Sedan, vad du måste göra är att förstå varför det inte har ett värde. Korrigeringen beror helt på målet för din metod.

Har du glömt att initiera / initiera det?

myGarage.CarCollection = new Car[10];

Ska du göra något annorlunda om objektet är noll?

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

Eller kanske någon gav dig ett nollargument och skulle inte:

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

Kom ihåg att en metod aldrig får kasta en NullReferenceException. Om det gör det betyder det att du har glömt att kontrollera något.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow