使用null条件运算符和动作

时间:2017-03-15 16:18:32

标签: c# c#-6.0

我有以下课程:

public class MyClass
{
    public Action SomeAction { get; set; }
}

在调用SomeAction之前,因为它有可能是null,我们会做类似的事情:

var action = SomeAction;
if (action != null)
{
    action();
}

但是,在中,我们现在有了null条件运算符,因此可以将上面的内容写成:

SomeAction?.Invoke();

但是由于Invoke调用,我觉得这个可读性稍差。无论如何在没有Invoke调用的情况下在这种情况下使用空条件运算符?类似的东西:

SomeAction?();

1 个答案:

答案 0 :(得分:7)

不,C#6.0或7.0中没有这样的语法。 The null conditional operator有两种形式:

  • null-condition成员访问?.,您已经将其拒绝为过于详细
  • null-condition index ?[,对代理没有意义(并且不能作为扩展名添加,或类似的东西)

文档甚至直接提及:

  

您需要显式调用Invoke方法,因为没有空条件委托调用语法PropertyChanged?(e)。有太多模糊的解析情况允许它。