1

Object reference not set to an instance of an object.エラーをトラブルシューティングするための手順/ガイダンスと、問題が発生する理由の説明を探しています。

より一般的な説明を探しているので、エラーが発生した場合、問題を見つけるためにどのような手順を実行する必要がありますか. 誰かが特定のコードを提供し、他の誰かが固定コードを提供するという投稿をよく見かけます (時々)。この問題を説明するために簡単なコード例が提供されていれば、それで問題ありません。

高度な説明が必要です。

4

5 に答える 5

0

これは、現在 null であるか、まだインスタンス化されていないオブジェクトを使用したことを意味します。

それは高レベルです....基本的に、壊れているものにはnull値が含まれている可能性があります。それを介してステップにブレークポイントを配置し、そのブレークポイントがヌルである可能性が高い場所に配置します。

于 2013-09-05T19:13:39.777 に答える
0

非常に一般的なエラーであるため、対処方法をすぐに学ぶことができます。基本的には、存在しないものを使おうとしているということです。

次に例を示します。

    Dim lstNumbers As List(Of Integer)
    lstNumbers.Add(1)
    lstNumbers.Add(2)
    lstNumbers.Add(3)

このコードを実行すると、null 参照例外が発生し、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というメッセージが表示されます。エラー。これが意味することは、'lstNumbers' というオブジェクトを作成し、それが整数のリストになることをコンパイラに伝えましたが、実際にはリストを作成していないということです。本質的に、プレースホルダーを作成しましたが、何かを保持するオブジェクトはありません。

これを修正するには、オブジェクト自体を作成する必要があります。したがって、上記の例の場合、次のように変更します。

    Dim lstNumbers As New List(Of Integer)
    lstNumbers.Add(1)
    lstNumbers.Add(2)
    lstNumbers.Add(3)

キーワードは、New新しいリスト オブジェクトを作成し、そのスペースに割り当てるように指示します。これで、エラーなしで追加できます。一部のオブジェクトは、文字列、整数など、自身を初期化します。

したがって、これらのタイプのエラーをトラブルシューティングするための最善のアドバイスは、オブジェクトがそれ自体のインスタンスに設定されていない理由を特定することです。New 関数を使用したか、次のような既存のオブジェクトに設定したことを確認してください。

    Dim lstNumbers As New List(Of Integer)
    lstNumbers.Add(1)
    lstNumbers.Add(2)
    lstNumbers.Add(3)

    Dim lstNumbers2 As List(Of Integer)
    lstNumbers2 = lstNumbers

lstNumbers を割り当てているため、lstNumbers2 で New を使用する必要はありません。ただし、次のことを試してみると、lstNumbers が初期化されていないため機能しません。

    Dim lstNumbers As List(Of Integer)

    Dim lstNumbers2 As List(Of Integer)
    lstNumbers2 = lstNumbers
于 2013-09-05T19:22:40.900 に答える
0

オブジェクトがあり、オブジェクト参照が null の場合、メソッドを呼び出すか、そのオブジェクトのプロパティにアクセスしようとすると、このエラーがスローされます。例えば..

String myString = null;
string anotherString = myString.Substring(0,2); //this will throw an error.

例としていくつかのコードがありますか?

于 2013-09-05T19:21:22.733 に答える