1

我在object reference not set to an instance of an objectwhile 循环的情况下遇到错误,我不知道发生了什么。代码是:

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

我试图使对象名称具有解释性。我认为||这是一个短路运算符,因此如果第一个条件为真,它不会评估第二个条件,并且错误不应该来自那里。关于导致错误的任何想法?

4

2 回答 2

3

如果您遇到null reference异常

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

我想例如:

ClassName == null

所以可能(只是猜测)你就足以已经存在的其他条件之前添加一个||条件,比如

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 是接收“对象引用未设置为对象实例”的对象还是静态数据表?

如果 ClassName 对象为空,则尝试检索 StaticDataTable 将引发该错误。

我错过了 OR (||) - 下面的答案应该有效。似乎正在发生的是第一个条件在 NOT NULL 时不满足,因此不会短路第二个条件。而下面的 '&& !=' 满足 '!=' 并短路第二个条件。

如果您需要空值,请尝试

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

这将循环直到其中一个为空(均非空)}

于 2012-06-19T20:40:39.160 回答