set 關鍵詞 (C# 參考)
set
關鍵字會在屬性或索引子中定義「存取子」方法,以將值指派給屬性或索引子項目。 如需詳細資訊和範例,請參閱 屬性、 自動實作的屬性和 索引器。
對於屬性 get
和 set
存取子執行除了在私人支援欄位中設定或擷取值以外的任何作業的簡單案例,您可以使用自動實作的屬性。 下列範例會實作為自動實作 Hours
的屬性。
class TimePeriod3
{
public double Hours { get; set; }
}
您可能會發現您需要實作其中一個存取子主體。 在 field
C# 13 中新增為預覽功能的 關鍵詞會宣告欄位支援的屬性。 您可以使用欄位支援的 屬性,讓編譯程式在手動撰寫另一個存取子時產生一個存取子。 您可以使用 field
關鍵字來存取編譯程式合成支援欄位:
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
來深入瞭解。
set
存取子通常是由指派值的單一陳述式所組成,如上述範例所示。 您可以將 set
存取子實作為運算式主體成員。 下列範例會將 get
和 set
存取子實作為運算式主體成員。
class TimePeriod2
{
private double _seconds;
public double Seconds
{
get => _seconds;
set => _seconds = value;
}
}
下列範例會為名為 Seconds
的屬性定義 get
和 set
存取子。 它使用名為 _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# 語法及用法的限定來源。