#Explicación de NullReferenceException
Un NullReferenceException
se lanza 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 una excepción de este tipo, es bastante fácil:en la línea donde se lanza la excepción, solo tiene 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 sobre cada uno de estos elementos y encontrará su referencia nula. Entonces, lo que hay que hacer es entender por qué no tiene valor. La corrección depende totalmente del objetivo de su método.
¿Olvidaste 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 debía:
if (theCarInTheStreet == null)
{
throw new ArgumentNullException("theCarInTheStreet");
}
En cualquier caso, recuerda que un método nunca debe lanzar una NullReferenceException. Si es así, significa que se olvidó de verificar algo.