自動實現的屬性

自動實現的屬性是在 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 文件。