2017-03-15 32 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)。有太多模棱兩可的解析情況允許它。