【发布时间】:2017-08-05 12:15:38
【问题描述】:
null 条件运算符可用于跳过对 null 目标的方法调用。在这种情况下是否会评估方法参数?
例如:
myObject?.DoSomething(GetFromNetwork());
当myObject 是null 时是否调用GetFromNetwork?
【问题讨论】:
标签: c# c#-6.0 null-conditional-operator
null 条件运算符可用于跳过对 null 目标的方法调用。在这种情况下是否会评估方法参数?
例如:
myObject?.DoSomething(GetFromNetwork());
当myObject 是null 时是否调用GetFromNetwork?
【问题讨论】:
标签: c# c#-6.0 null-conditional-operator
myObject?.Method();
基本上等价于
var temp = myObject;
if (temp != null) {
temp.Method();
}
您会看到,如果 myObject 是 null,则无法评估任何参数。
请注意,如果您将 myObject 替换为
【讨论】:
object,如果非null,后者计算两次。由于它们不等价,因此不应从中得出任何结论。