我在while循环的情况下遇到object reference not set to an instance of an object
错误,我不知道它发生了什么。代码是:
while (ClassName.StaticDataTable == null || ClassName.StaticDataTable.Rows == null)
我试图让对象名称解释清楚。我认为||
是一个短路操作符,所以如果第一个条件为真,它将不会评估第二个条件,并且错误不应该来自那里。关于导致错误的原因的任何想法?
答案 0 :(得分: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.
的某些操作,尝试将挖掘到该属性中。
希望这有帮助。
答案 1 :(得分:0)
ClassName是接收“未设置为对象实例的对象引用”或StaticDataTable的对象吗?
如果是ClassName对象为null,则检索StaticDataTable的尝试会引发该错误。
我错过了OR(||) - 下面的答案应该有效。似乎正在发生的是当NOT NULL时不满足第一个条件,因此不会使第二个条件短路。而'&& !='下面遇到'!='并短路第二个条件。
如果您需要null,请尝试
while (true) {
if (classname.tbl != null && classname.tbl.object != null){
break;
}
<whatever code you need>
...
} end while
这将循环,直到其中任何一个为空(都不为空) }