自動實現的屬性
自動實現的屬性是在 C#3,引進 的自動實現的屬性都被定義為一個空的 getter 和 setter(存取):
public bool IsValid { get; set; }
在程式碼中寫入自動實現的屬性時,編譯器會建立一個只能通過屬性的訪問器訪問的私有匿名欄位。
上面自動實現的屬性語句相當於編寫這個冗長的程式碼:
private bool _isValid;
public bool IsValid
{
get { return _isValid; }
set { _isValid = value; }
}
自動實現的屬性在其訪問器中不能包含任何邏輯,例如:
public bool IsValid { get; set { PropertyChanged("IsValid"); } } // Invalid code
但是,自動實現的屬性可以為其訪問者提供不同的訪問修飾符:
public bool IsValid { get; private set; }
C#6 允許自動實現的屬性根本沒有 setter(使其成為不可變的,因為它的值只能在建構函式中設定或硬編碼):
public bool IsValid { get; }
public bool IsValid { get; } = true;
有關初始化自動實現的屬性的更多資訊,請閱讀 Auto-property initializers 文件。