2012-12-05 69 views
0

可能重複:
What is the difference between a field and a property in C#?
Difference between Property and Field in C# .NET 3.5+爲什麼我們使用字段和屬性而不是變量?

我已經看到,在C#下面的模式是很常見:

private string m_name = string.Empty; 

public string Name 
{ 
    get 
    { 
     return m_name; 
    } 
    set 
    { 
     m_name = value; 
    } 
} 

爲什麼我們使用字段和當我們可以使用一個簡單的變量時,屬性保存一個值? 我爲什麼要使用字段和屬性,而不是一個簡單的變量?

+0

請參閱上述問題的廣泛答案 –

+0

這取決於您想要預先處理的值。想象一下,如果你(出於某種原因)想要確保任何保存爲Name的字符串至少包含1個'e',則可以在setter中而不是在主代碼體中執行所有邏輯。 –

回答

2

只是爲了封裝原則。對於hinding混凝土implementaiton,並且加,你有機會(在這種情況下),以增加內部get/set額外的代碼。

如果您不需要addittional代碼,你可以只使用

public string Name{get;set;} 

或使用的Fileds,因爲你想。但是,使用性質是指導微軟提供。

所以基本上所有的,遵循它。

0

有很多的原因,但2浮現在腦海中馬上:

首先,屬性可以很容易地綁定到控制或其他基於反射的控制讀取所有屬性(而不是字段)。

其次,有可能是您要在getter方法或setter方法(如燒製NotifyPropertyChanged事件)來執行操作。

0

屬性提供了通過讀取和寫入屬性來保護課程的機會。在其他語言中,這通常通過執行專門的getter和setter方法的程序來完成。 C#屬性啓用這種類型的保護,同時讓您可以像訪問字段一樣訪問屬性。

屬性相對於字段的另一個好處是您可以隨時間更改其內部實現。使用公共字段時,基礎數據類型必須始終保持相同,因爲調用代碼依賴於相同的字段。但是,對於屬性,您可以更改實現。

相關問題