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
デバッグモードでは、これらの要素のそれぞれにマウスカーソルを置くだけで、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