【发布时间】:2014-07-09 11:12:36
【问题描述】:
object bread(food foo)
{
return foo.ingredient ?? "cheese";
}
如果 foo 退出,但成分是 null,我得到 "cheese"。
我的问题,包括一个假设:
如果 foo 本身是 null 将返回 "chesse" 还是会抛出 ArgutmentNullException?
我的猜测是 NullCoalescingOperator 或多或少是这样实现的:
object nco(object lhs, object rhs)
{
if(lhs != null)
return lhs;
else
return rhs;
}
因此通过 foo.ingredient 已经导致异常(因为您无法检查您没有的对象中的字段),因此它被抛出。
会有意义。
这个想法是否正确/nco 是如何实施的?为什么?
【问题讨论】:
-
您是指
??还是??什么 C# 版本?我已经阅读过类似foo?.ingredient的语法,但我不确定它是否已进入 C#。 -
如果
foo为空,你会得到NullReferenceException -
@CodeCaster
??当然。谢谢。 -
您可以通过在一个简单的测试项目中尝试您的面包示例来断言您自己的假设。你不这样做的原因是什么?
-
请注意,在some versions of C# 中将允许使用
return foo?.ingredient ?? "cheese";,其中运算符?.是C# 中的新运算符。查看我的链接。