17

我遇到了一些这样的 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 类的内容是否为空并不重要。

4

1 回答 1

27

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

那里的引用可能为空,具体取决于GetClassB(). 因此,从技术上讲,那里可能会有一个空引用等待发生。

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

return gcnew ClassB();

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

所以,真正的答案是:视情况而定,但您永远不需要检查是否为空。

要检查 null 使用:

if (b == nullptr)
{
}
于 2010-06-24T13:16:08.000 回答