我遇到了一些这样的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类的内容是否为null并不重要.
解决方法
这个程序在语法和语义上都是正确的,据我所知.
引用COULD在此处为null,具体取决于GetClassB()的实现.所以在技术上可能会有一个零参考等待在那里发生.
但是,如果GetClassB()的内容如下所示:
return gcnew ClassB();
您可以保证抛出异常或成功,这意味着引用永远不会意外为null.
所以,真正的答案是:这取决于,但你永远不需要检查null.
检查null使用:
if (b == nullptr) { }