如何在托管C ++中检查“NULL对象引用”?

时间:2010-06-24 13:14:26

标签: visual-c++ c++-cli managed-c++ object-reference

我遇到了一些像这样的MC ++代码:

__gc class ClassA
{
Puclic:
     ClassB GetClassB();
}

__gc class ClassB
{
 Public:
    int Value;
}

int main()
{
    ClassA^ a = gcnew ClassA();
    ClassB^ b = a->GetClassB();

    int c = b->Value;
}

在访问其值之前检查b是否为NULL不重要吗?我试过if(b == NULL),但它不起作用。

或者它真的没有必要进行检查?但我简直不敢相信......

PS:我只想知道“参考”本身在这里是否为NULL。 B类内容是否为空并不重要。

1 个答案:

答案 0 :(得分:21)

据我所知,这个程序在语法和语义上都是正确的。

引用可能在那里为空,具体取决于GetClassB()的实现。因此,从技术上讲,可能存在等待在那里发生的空引用。

但是,如果GetClassB()的内容如下所示:

return gcnew ClassB();

您可以保证抛出异常或成功,这意味着引用永远不会意外为空。

所以,真正的答案是:它取决于你,但你永远不会要求检查是否为空。

检查空使用:

if (b == nullptr)
{
}