共用方式為


get 關鍵字

get 關鍵字會在屬性或索引子中定義「存取子」方法,以傳回屬性值或索引子項目。 如需詳細資訊,請參閱 Properties自動實作屬性Indexers

對於屬性 getset 存取子除了在私人支援字段中設定或擷取值以外的任何作業,您可以利用 C# 編譯程式對自動實作屬性的支援。 下列範例會實作為自動實作 Hours 的屬性。

class TimePeriod3
{
    public double Hours { get; set; }
}

重要

介面屬性宣告或部分屬性的實作宣告不允許自動實作的屬性。 編譯程式會將符合自動實作屬性的語法解譯為宣告宣告,而不是實作宣告。

get 存取子通常是由傳回值的單一陳述式所組成,如上述範例所示。 您可以將 get 存取子實作為運算式主體成員。 下列範例會將 getset 存取子實作為運算式主體成員。

class TimePeriod2
{
    private double _seconds;

    public double Seconds
    {
        get => _seconds;
        set => _seconds = value;
    }
}

您可能會發現您需要實作其中一個存取子主體。 您可以使用欄位支援的 屬性,讓編譯程式在手動撰寫另一個存取子時產生一個存取子。 您可以使用 field C# 13 中新增為預覽功能的 關鍵字來存取編譯程式合成支援欄位:

class TimePeriod4
{
    public double Hours {
        get;
        set => field = (value >= 0)
            ? value
            : throw new ArgumentOutOfRangeException(nameof(value), "The value must not be negative");
    }
}

重要

關鍵詞 field 是 C# 13 中的預覽功能。 您必須使用 .NET 9,並將項目 <LangVersion> 檔中的 元素設定為 preview ,才能使用 field 內容關鍵詞。

您應該小心在 field 類別中使用關鍵詞功能,其具有名為 field的欄位。 新的 field 關鍵詞會遮蔽屬性存取子範圍中名為 field 的欄位。 您可以變更變數的名稱 field ,或使用 @ 權杖將識別元參考 field@field。 您可以閱讀 關鍵詞field來深入瞭解。

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

class TimePeriod
{
    private double _seconds;

    public double Seconds
    {
        get { return _seconds; }
        set
        {
            if (value < 0)
            {
                throw new ArgumentOutOfRangeException(nameof(value), "The value of the time period must be non-negative.");
            }
            _seconds = value;
        }
    }
}

C# 語言規格

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

另請參閱