1

while ループの状態でエラーが発生しましobject reference not set to an instance of an objectたが、何が起こっているのかわかりません。コードは次のとおりです。

while (ClassName.StaticDataTable == null || ClassName.StaticDataTable.Rows == null)

オブジェクト名をわかりやすいものにしようとしました。||最初の条件が真の場合、2番目の条件を評価せず、そこからエラーが発生しないように、短絡演算子だと思いました。エラーの原因についてのアイデアはありますか?

4

2 に答える 2

3

null reference例外 が発生している場合

while (ClassName.StaticDataTable == null || ClassName.StaticDataTable.Rows == null)

たとえば、次のように考えます。

ClassName == null

したがって (推測で)すでに存在する他の条件の前||に 1 つの条件を追加するだけで十分な場合があります。

while (ClassName == null || ClassName.StaticDataTable == null || ClassName.StaticDataTable.Rows == null)

編集

StaticDataTableプロパティが値を返すだけでなく、null reference exception.Try to dig into that propertyをスローする何かを内部で実行する場合もあります。

お役に立てれば。

于 2012-06-19T20:46:49.997 に答える
0

ClassName は、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」または StaticDataTable を受け取るオブジェクトですか?

null の ClassName オブジェクトである場合、StaticDataTable を取得しようとすると、そのエラーが発生します。

OR (||) を逃しました - 以下の答えがうまくいくはずです。発生しているように見えるのは、NOT NULL の場合、最初の条件が満たされないため、2 番目の条件をショートさせないことです。以下の「&& !=」は「!=」を満たし、2 番目の条件を短絡します。

nullが必要な場合は、試してください

    while (true) {
            if (classname.tbl != null && classname.tbl.object != null){
               break;
            }
             <whatever code you need>
            ...
    } end while

これは、どちらかが null (両方とも null ではない) になるまでループします }

于 2012-06-19T20:40:39.160 に答える