init (C# 參考)

在 C# 9 和更新版本中, init 關鍵字會在屬性或索引子中定義 存取子 方法。 僅限 init 的 setter 只會 在物件建構期間,將值指派給 屬性或索引子元素。 這會強制執行不變性,如此一旦初始化物件,就無法再次變更。

如需詳細資訊和範例,請參閱屬性自動實作的屬性索引子

下列範例會為 get 名為 YearOfBirth 的屬性定義 和 init 存取子。 它使用名為 _yearOfBirth 的私用欄位來支援屬性值。

class Person_InitExample
{
     private int _yearOfBirth;

     public int YearOfBirth
     {
         get { return _yearOfBirth; }
         init { _yearOfBirth = value; }
     }
}

init 存取子通常是由指派值的單一陳述式所組成,如上述範例所示。 請注意,由於 , init 下列專案 將無法 運作:

var john = new Person_InitExample
{
    YearOfBirth = 1984
};

john.YearOfBirth = 1926; //Not allowed, as its value can only be set once in the constructor

存取 init 子可以當做運算式主體成員使用。 範例:

class Person_InitExampleExpressionBodied
{
    private int _yearOfBirth;

    public int YearOfBirth
    {
        get => _yearOfBirth;
        init => _yearOfBirth = value;
    }
}

存取 init 子也可用於自動實作的屬性,如下列範例程式碼所示:

class Person_InitExampleAutoProperty
{
    public int YearOfBirth { get; init; }
}

C# 語言規格

如需詳細資訊,請參閱 C# 語言規格。 語言規格是 C# 語法及用法的限定來源。

另請參閱