2009-04-27 141 views
2

只使用公共屬性而不是使用公共屬性訪問私有變量有什麼好處?公共屬性和私人成員C#

例如

public int iMyInt { get; set; } 

,而不是

private int myint; 
public int iMyInt { get { return myint; } set { myint = value; } } 

除了讓.NET經營管理的財產下的變量/記憶,什麼是(對於這個問題或缺點)的優勢是什麼?

回答

11

使用自動屬性(第一個示例)需要較少的輸入。

強烈建議只有公共財產,而不是公共領域。許多屬性都是私有域的簡單包裝。自動屬性爲您節省了手動創建屬性和後臺字段的時間和麻煩。

您提到的簡單案例的自動和手動屬性背後的實際代碼應該幾乎相同。

+2

同樣有利於使用公共屬性,如果您還想利用DataBinding – RobS 2009-04-27 23:43:07

1

直到您想要某個屬性被獲取或設置時纔會發生某種情況,這種方式沒有任何區別。

例如,如果您想要一個OnMyIntSet事件,則不能使用自動屬性語法。

4

一旦編譯成IL,這兩者幾乎相同。

我個人的經驗法則是使用自動屬性。它們更加簡潔,並且需要更少的打字,而且我知道,當我使用它們時,它們只是一個無邏輯的簡單包裝。

如果我以後需要添加邏輯,很容易切換到我自己的後臺字段,並且沒有(外部)後果。

8

我建議比要求更少打字更重要的是提高可讀性的代碼。我通常會建議使用自動屬性作爲我的默認選項,並且只有在對它們有特定要求時切換到顯式屬性。

+2

+1,優點。與他們的支持領域的屬性很容易導致大量的鍋爐板代碼分散您的班級的「重要」部分。 – Michael 2009-04-27 23:45:10

1

我的個人偏好是自動屬性,除非有其他必要。

使用自動屬性的優點當然是簡潔。它佔用更少的空間,更易於閱讀,打字更容易。

缺點是你不再有權訪問私有備份變量,有時你需要那。

因此:當您需要使用私人支持變量時,請使用「舊」方法。如果不這樣做,請使用自動屬性。切勿使用公共領域。這只是瘋狂的談話。

0

只是快速提示:自動實現的屬性必須同時定義get和set訪問器。