对象引用未设置为检查null的对象实例

时间:2012-06-19 20:37:23

标签: c# .net

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

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

我试图让对象名称解释清楚。我认为||是一个短路操作符,所以如果第一个条件为真,它将不会评估第二个条件,并且错误不应该来自那里。关于导致错误的原因的任何想法?

2 个答案:

答案 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

这将循环,直到其中任何一个为空(都不为空) }