C# Language
NullReferenceException
Recherche…
NullReferenceException expliqué
Une NullReferenceException
est NullReferenceException
lorsque vous essayez d'accéder à un membre non statique (propriété, méthode, champ ou événement) d'un objet de référence, mais qu'il est nul.
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.
Pour déboguer une telle exception, c'est assez simple: sur la ligne où l'exception est lancée, il suffit de regarder avant chaque exception .
'ou' [
', ou à de rares occasions' (
'.
myGarage.CarCollection[currentIndex.Value].Color = theCarInTheStreet.Color;
D'où vient mon exception? Non plus:
-
myGarage
estnull
-
myGarage.CarCollection
estnull
-
currentIndex
estnull
-
myGarage.CarCollection[currentIndex.Value]
estnull
-
theCarInTheStreet
estnull
En mode débogage, il vous suffit de placer le curseur de la souris sur chacun de ces éléments et vous trouverez votre référence null. Ensuite, vous devez comprendre pourquoi il n’a pas de valeur. La correction dépend totalement du but de votre méthode.
Avez-vous oublié d'instancier / initialiser?
myGarage.CarCollection = new Car[10];
Êtes-vous censé faire quelque chose de différent si l'objet est nul?
if (myGarage == null)
{
Console.WriteLine("Maybe you should buy a garage first!");
}
Ou peut-être que quelqu'un vous a donné un argument nul et n'était pas censé:
if (theCarInTheStreet == null)
{
throw new ArgumentNullException("theCarInTheStreet");
}
Dans tous les cas, rappelez-vous qu'une méthode ne doit jamais lancer une exception NullReferenceException. Si c'est le cas, cela signifie que vous avez oublié de vérifier quelque chose.