屬性是類/結構/接口的命名成員,通過 get/set 訪問器控制私有字段讀寫,實現封裝。屬性不佔用存儲,訪問器執行邏輯。
private string code = "N.A";
public string Code {
get { return code; }
set { code = value; }
}
public string Name { get; set; } // 編譯器自動生成後備字段
public int Age { get; private set; } // 只允許內部設置
class Student {
private string code, name; private int age;
public string Code { get => code; set => code = value; }
public string Name { get => name; set => name = value; }
public int Age { get => age; set => age = value; }
public override string ToString() => $"Code={Code}, Name={Name}, Age={Age}";
}
// 使用
var s = new Student { Code="001", Name="Zara", Age=9 };
s.Age++; // 10
抽象類定義契約,派生類必須實現:
public abstract class Person {
public abstract string Name { get; set; }
public abstract int Age { get; set; }
}
class Student : Person {
public override string Name { get; set; }
public override int Age { get; set; }
}
最佳實踐:公開數據成員一律用屬性,保留未來添加邏輯的彈性。