C# Language
NullReferenceException
Ricerca…
Spiegazione di NullReferenceException
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.