C# Language
NullReferenceException
Поиск…
Исправлено исключение 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. Если да, значит, вы забыли что-то проверить.