2011-04-25 30 views
2

讓C#創建使用自動屬性創建(即{get; set})生成的私有後臺字段有什麼缺點嗎?自動實現的獲取/設置屬性

我知道它是自動的,因此你不能自定義get/set,並想知道是否有任何其他影響。

謝謝!

+1

不是一個問題。如果您發現需要某些功能或其他功能,則可以稍後將自動屬性輕鬆轉換爲手動屬性。這不是一個突破性的改變。 – 2011-04-25 13:21:37

回答

4

如果您使用的是BinaryFormatter,自動實現的屬性更改爲(或自動)屬於重大更改,因爲字段名稱對BF很重要。當然,一個簡單的解決方法是:不要使用BF!

您也無法使用自動屬性將屬性添加到支持字段

沒有字段初始值。

沒有真正的readonly用於不變性。

顯然你不能添加邏輯;沒有懶惰,驗證,副作用或通知事件。

有了結構,你需要調用:this()自定義構造函數,這很醜陋。

否則:他們是偉大的。我是一個大粉絲。

6

我遇到的最大問題是,在查看綁定方案時,它通常是非常有限的。通常在使用數據綁定時,您需要實現INotifyPropertyChanged,這是自動屬性不支持的。

2

最大的問題是你不能使用支持字段,因爲它們是由編譯器創建的。這意味着你不能聲明它們是const或只讀的,這意味着你不能在訪問它們時添加邏輯(例如懶惰初始化)等等。好消息是,從autoproperty開始,重構使用後臺字段容易,當你有一個理由。