我有以下课程:
public class MyClass
{
public Action SomeAction { get; set; }
}
在调用SomeAction
之前c#-6.0,因为它有可能是null
,我们会做类似的事情:
var action = SomeAction;
if (action != null)
{
action();
}
但是,在c#-6.0中,我们现在有了null条件运算符,因此可以将上面的内容写成:
SomeAction?.Invoke();
但是由于Invoke
调用,我觉得这个可读性稍差。无论如何在没有Invoke
调用的情况下在这种情况下使用空条件运算符?类似的东西:
SomeAction?();
答案 0 :(得分:7)
不,C#6.0或7.0中没有这样的语法。 The null conditional operator有两种形式:
?.
,您已经将其拒绝为过于详细?[
,对代理没有意义(并且不能作为扩展名添加,或类似的东西)文档甚至直接提及:
您需要显式调用
Invoke
方法,因为没有空条件委托调用语法PropertyChanged?(e)
。有太多模糊的解析情况允许它。