// C# 簡寫屬性
public string Name { get; set; }
// 編譯器展開為
private string _name;
public string get_Name() => _name;
public void set_Name(string value) => _name = value;
// Java
private String name;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
| 特性 | C# 屬性 | Java 字段 + 方法 |
|---|---|---|
| 語法簡潔度 | 極高(自動屬性一行) | 需手寫 6-8 行 |
| 封裝控制 | get; private set; 等訪問級別 | 方法訪問修飾符控制 |
| 驗證邏輯 | 在 set { if(v<0) throw; _x=v; } 中編寫 | 在 setX 方法中編寫 |
| 反射獲取 | PropertyInfo | Method (getX/setX) |
| 調試體驗 | 視為字段,可直接 Watch | 需調用方法 |
本質上功能等價,C# 屬性為語法糖,減少樣板代碼,提升可讀性與維護性。