一千萬個為什麽

搜索

事件或C#中的Lambdas?

我只是把它當作一個好奇心問題而拋出去......

Assuming you're only expecting/wanting one method to be provided, would this be frowned upon or bad practice?

public class Something  {
    public Action OnRemove =() => { };
    public Action OnFinishedLoading = (sender, e) => { };
}

// then used like...
something.OnRemove =() => { /*do something...*/ };
something.OnFinishedLoading = (sender, e) => { /*do something else...*/ };

我意識到這就像在事件中作弊一樣,但是我對這種方法有什麽不滿?從長遠來看,這會對您的應用程序造成任何潛在的問題嗎?

我意識到如果你想要運行多種方法,那麽事件會更好,這主要是一個問題,如果你只想要/期待一種方法。

最佳答案

那麽,最明顯的問題就是它暴露了公共領域。我至少會使用一個屬性 - 無論如何,事件可能會更簡單。它使用比代碼更少的代碼來提供更多的靈活性(因為您無法使用具有特定默認值的自動實現的屬性)。

另一種方法是將其帶入構造函數中,然後將其保留為專用只讀字段。這可能是我真正想做的事情......是否真的有必要將行動公開為財產/領域?

轉載註明原文: 事件或C#中的Lambdas?