Ech*_*cho 13 managed-c++ c++-cli object-reference visual-c++
我遇到了一些像这样的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;
}
Run Code Online (Sandbox Code Playgroud)
在访问其值之前检查b是否为NULL不重要吗?我试过了if(b == NULL),但它不起作用.
或者它真的没有必要进行检查?但我简直不敢相信......
PS:我只想知道"参考"本身在这里是否为NULL.B类的内容是否为空并不重要.
Joh*_*zen 22
据我所知,这个程序在语法和语义上都是正确的.
参考COULD在那里为空,具体取决于实现GetClassB().因此,从技术上讲,可能存在等待在那里发生的空引用.
但是,如果内容GetClassB()看起来像这样:
return gcnew ClassB();
Run Code Online (Sandbox Code Playgroud)
您可以保证抛出异常或成功,这意味着引用永远不会意外为空.
所以,真正的答案是:它取决于你,但你永远不需要检查null.
要检查空使用:
if (b == nullptr)
{
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21647 次 |
| 最近记录: |