手動實現(經典模式)
public class Person
{
// 私有字段,命名慣例以 _ 開頭或小寫
private string _name;
// 公共屬性
public string Name
{
get { return _name; }
set { _name = value; }
}
}
自動屬性(C# 3.0+ 推薦)
public class Person
{
// 編譯器自動生成隱私字段
public string Name { get; set; }
}
帶驗證的屬性
private int _age;
public int Age
{
get { return _age; }
set
{
if (value < 0 || value > 150)
throw new ArgumentOutOfRangeException(nameof(Age), "年齡必須在 0-150 之間");
_age = value;
}
}
只讀屬性 (C# 6.0+)
public string Id { get; } = Guid.NewGuid().toString(); // 初始化後不可修改
// 或構造函數賦值
public Person(string name) => Name = name;
最佳實踐
- 優先使用自動屬性,需要邏輯時再展開為手動屬性。
- 字段標記
private,屬性標記 public(或 internal/protected)。
- 避免公共字段,破壞封裝性。
