2017-03-15 29 views
2

我有以下类:使用空条件运算符和行动

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

在致电SomeAction时,因为它必须是null我们会做一些这样的潜力:

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

然而在我们现在有空条件运算符,因此可以写出上面:

SomeAction?.Invoke(); 

但是我觉得这是略少可读性,因为Invoke通话。无论如何在没有调用Invoke的情况下在这种情况下使用空条件运算符?喜欢的东西:

SomeAction?(); 

回答

6

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

  • 空状态成员访问?.,你已经拒绝,因为太冗长
  • 空状况指数?[,不为代表意义(并且不能添加作为扩展,或类似的东西)

文档甚至直接提到了这一点:

你需要明确调用Invoke方法,因为没有空值条件委托调用语法PropertyChanged?(e)。有太多模棱两可的解析情况允许它。