NullReferenceException 解釋
當你嘗試訪問引用物件的非靜態成員(屬性,方法,欄位或事件)但它為 null 時,將引發 NullReferenceException
。
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];
如果物件為空,你應該做一些不同的事嗎?
if (myGarage == null)
{
Console.WriteLine("Maybe you should buy a garage first!");
}
或者也許有人給你一個空引數,並不應該:
if (theCarInTheStreet == null)
{
throw new ArgumentNullException("theCarInTheStreet");
}
無論如何,請記住,方法永遠不應該丟擲 NullReferenceException。如果是這樣,那意味著你忘了檢查一些東西。