2013-05-29 95 views
0

是什麼的C#屬性的getter和setter實施

Class cl1 
{ 
    public int var{get;set;} 
} 

Class cl1 
{ 
    public int var; 
} 

我指的是執行之間的區別,兩者如何實現這樣的 -

void Main() 
{ 
    cl1 obj = new cl1(); 
    obj.var = 25; 
    int k = obj.var; 
} 

,如果沒有什麼區別,那麼爲什麼我會在Library Assemblies中看到第二個實現如此常見?

回答

0

我想大約兩個原因:

  1. 它隱藏實現:物業VAR可以使用私有字段是不是一個VAR或可能不會在所有使用私人領域和客戶端將不知道這個

  2. 它更容易改變:如果在你的代碼中你使用了field obj.var 100次,並且在某些時候你必須改變該字段的某些內容,你必須修改所有的調用,而如果你有一個屬性,你可以以更簡單的方式修改實施,而無需修改所有呼叫(至少如果您不更改財產的簽名)

不來我的心現在

+0

感謝很多可能還有其它原因,第二個原因似乎更貼切。 :D(y) –

+0

其實我覺得第一個比較重要,不管怎麼樣歡迎:) –