有屬性訪問
和
之間public string Name
{
get
{
return _name;
}
set
{
_name = value;
}
}
public string Name {get; set;}
有屬性訪問
和
之間public string Name
{
get
{
return _name;
}
set
{
_name = value;
}
}
public string Name {get; set;}
沒什麼根本,你可以通常它們之間的變化安全....直到一些已經使用的字段名(我在看BinaryFormatter
這裏...)。
否則,不。通常情況下,你可以在兩者之間切換,而不會破壞事物,例如添加邏輯或向該字段添加屬性。
基本上沒有什麼根本區別,如果你想爲20個屬性做這個,當你不需要封裝,但是希望有未來的選擇時,#2會爲你節省很多行。
對於你的類的外部消費者(假設_name是私有的),它們是相同的,除非你使用類似BinaryFormatter的東西,它使用反射來存儲對象的內部狀態。
對於您的課程,主要區別在於您在使用自動屬性時無權訪問該字段。這意味着你不能做一些事情,比如使用該屬性作爲ref或out參數。例如,如果您有一個int值並且正在讀取構造函數中的默認值,則不能說Int32.TryParse(s, out Range)
。你可以說Int32.TryParse(s, out _range)
。
其他可能的重複:http://stackoverflow.com/questions/4923630/c-getters-setters-declaration和http://stackoverflow.com/questions/1568091/why-use-getters-and-setters –