Поиск…


Исправлено исключение NullReferenceException

NullReferenceException при попытке получить доступ к нестатическому члену (свойство, метод, поле или событие) ссылочного объекта, но оно равно null.

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.

Чтобы отладить такое исключение, это довольно просто: в строке, где выбрано исключение, вам просто нужно посмотреть перед каждым » . 'или' [ ', или в редких случаях " ( '.

myGarage.CarCollection[currentIndex.Value].Color = theCarInTheStreet.Color;

Откуда мое исключение? Или:

  • myGarage - null
  • myGarage.CarCollection - null
  • currentIndex равен null
  • myGarage.CarCollection[currentIndex.Value] имеет значение null
  • theCarInTheStreet имеет значение null

В режиме отладки вам нужно только поместить курсор мыши на каждый из этих элементов, и вы найдете свою нулевую ссылку. Тогда вам нужно понять, почему это не имеет значения. Коррекция полностью зависит от цели вашего метода.

Вы забыли создать / инициализировать его?

myGarage.CarCollection = new Car[10];

Вы должны делать что-то другое, если объект имеет значение null?

if (myGarage == null)
{
    Console.WriteLine("Maybe you should buy a garage first!");
}

Или, может быть, кто-то дал вам нулевой аргумент и не должен был:

if (theCarInTheStreet == null)
{
    throw new ArgumentNullException("theCarInTheStreet");
}

В любом случае помните, что метод никогда не должен генерировать исключение NullReferenceException. Если да, значит, вы забыли что-то проверить.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow