C# Language
NullReferenceException
Szukaj…
Wyjaśnienie NullReferenceException
NullReferenceException
jest NullReferenceException
gdy próbujesz uzyskać dostęp do niestatycznego elementu (właściwości, metody, pola lub zdarzenia) obiektu referencyjnego, ale jest on zerowy.
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.
Debugowanie takiego wyjątku jest dość łatwe: na linii, w której wyjątek jest zgłaszany, wystarczy spojrzeć przed każdym ” .
”lub„ [
”lub w rzadkich przypadkach” (
„.
myGarage.CarCollection[currentIndex.Value].Color = theCarInTheStreet.Color;
Skąd pochodzi mój wyjątek? Zarówno:
-
myGarage
manull
-
myGarage.CarCollection
manull
-
currentIndex
manull
-
myGarage.CarCollection[currentIndex.Value]
manull
-
theCarInTheStreet
manull
W trybie debugowania wystarczy umieścić kursor myszy na każdym z tych elementów, a znajdziesz referencję zerową. Następnie musisz zrozumieć, dlaczego nie ma ono wartości. Korekta całkowicie zależy od celu twojej metody.
Czy zapomniałeś utworzyć / zainicjować?
myGarage.CarCollection = new Car[10];
Czy powinieneś zrobić coś innego, jeśli obiekt jest pusty?
if (myGarage == null)
{
Console.WriteLine("Maybe you should buy a garage first!");
}
A może ktoś podał ci zerowy argument i nie miał:
if (theCarInTheStreet == null)
{
throw new ArgumentNullException("theCarInTheStreet");
}
W każdym razie pamiętaj, że metoda nigdy nie powinna zgłaszać wyjątku NullReferenceException. Jeśli tak, oznacza to, że zapomniałeś coś sprawdzić.