');

C# Language Spiegazione di NullReferenceException

Esempio

Viene generata una NullReferenceException quando si tenta di accedere a un membro non statico (proprietà, metodo, campo o evento) di un oggetto di riferimento ma è nullo.

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.

Per eseguire il debug di questa eccezione, è abbastanza semplice: sulla riga in cui viene lanciata l'eccezione, è sufficiente guardare prima di ogni ' . 'o' [ ', o in rare occasioni' ( '.

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

Da dove viene la mia eccezione? O:

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

In modalità di debug, devi solo posizionare il cursore del mouse su ognuno di questi elementi e troverai il tuo riferimento null. Quindi, quello che devi fare è capire perché non ha un valore. La correzione dipende totalmente dall'obiettivo del tuo metodo.

Hai dimenticato di istanziarlo / inizializzarlo?

myGarage.CarCollection = new Car[10];

Dovresti fare qualcosa di diverso se l'oggetto è nullo?

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

O forse qualcuno ti ha dato un argomento nullo, e non avrebbe dovuto:

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

In ogni caso, ricorda che un metodo non dovrebbe mai lanciare una NullReferenceException. Se lo fa, significa che hai dimenticato di controllare qualcosa.