C# Language
Excepcion de referencia nula
Buscar..
NullReferenceException explicado
Se NullReferenceException
una NullReferenceException
cuando intenta acceder a un miembro no estático (propiedad, método, campo o evento) de un objeto de referencia pero es nulo.
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.
Para depurar tal excepción, es bastante fácil: en la línea donde se lanza la excepción, solo hay que mirar antes de cada ' .
'o' [
', o en raras ocasiones' (
'.
myGarage.CarCollection[currentIndex.Value].Color = theCarInTheStreet.Color;
¿De dónde viene mi excepción? Ya sea:
-
myGarage
esnull
-
myGarage.CarCollection
esnull
-
currentIndex
esnull
-
myGarage.CarCollection[currentIndex.Value]
esnull
-
theCarInTheStreet
esnull
En el modo de depuración, solo tiene que colocar el cursor del mouse en cada uno de estos elementos y encontrará su referencia nula. Entonces, lo que tienes que hacer es entender por qué no tiene un valor. La corrección depende totalmente del objetivo de tu método.
¿Te has olvidado de instanciarlo / inicializarlo?
myGarage.CarCollection = new Car[10];
¿Se supone que debes hacer algo diferente si el objeto es nulo?
if (myGarage == null)
{
Console.WriteLine("Maybe you should buy a garage first!");
}
O tal vez alguien te dio un argumento nulo, y se suponía que no:
if (theCarInTheStreet == null)
{
throw new ArgumentNullException("theCarInTheStreet");
}
En cualquier caso, recuerde que un método nunca debe lanzar una NullReferenceException. Si lo hace, eso significa que has olvidado revisar algo.