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 es null
  • myGarage.CarCollection es null
  • currentIndex es null
  • myGarage.CarCollection[currentIndex.Value] es null
  • theCarInTheStreet es null

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.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow