サーチ…


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;

私の例外はどこから来たのですか?どちらか:

  • myGaragenull
  • myGarage.CarCollectionnull
  • currentIndexnull
  • myGarage.CarCollection[currentIndex.Value]null
  • theCarInTheStreetnull

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