我已经知道空条件运算符 可用于在执行成员访问之前测试空值。
例如 :
int? length = customers?.Length; // null if customers is null
Customer first = customers?[0];
如果customers
是 null in customers?.Length
,那么customers?.Length
将返回 null 并且null
将在int? length = ...
变量中
我也知道它可以用于多线程环境中方法调用的单个原子操作:
public void OnFoo()
{
Foo?.Invoke(this, EventArgs.Empty);
}
但
AFAIU - 如果Foo
是null
那么
Foo?.Invoke(this, EventArgs.Empty);
也是null
所以我们只剩下
public void OnFoo()
{
null; //compilation error
}
所以我问:
问题
似乎空条件运算符不仅用于测试空,如果有,那么它会更深入: x?.y?.c?.d
-
但它也像代码切换一样:
像这样:
public void OnFoo()
{
Foo?.Invoke(this, EventArgs.Empty); //Let's assume Foo =null;
}
变成
public void OnFoo()
{
}
我对吗?我没有找到这方面的任何文档。