[C#] C#14的新關鍵字 field , .NET 10 之後才能用

2025-12-01

最近 Visual Studio 2026 正式推出了,伴隨而來的就是 .Net10 因為有 LTS 版本

看來會是這陣子主要升級專案的目標,對我來說每次更西,我都會看一下多什麼,有啥是可以馬上遇到的..


.NET 10 加入一個很小但影響很大的語法糖

叫做 "field",繼上次我記得是 2007 之後 get;set; 

我覺得算一個語法上的改進,不過我想應該也是語法糖而已,等等晚點用 MSIL 來看看

在很久以前,我們在寫 物件的 Property 我們會這樣做

public class FooObject { private string _token; public string Token { get { return _token; } set { _token = value; } } }

之後2007 , get;set; 出現後,我們大概會寫成這樣

public class FooObject { public string Token { get;set; } }

但是,有時候我們必須要在 Property 做一些處理,這時候我們又得回到最原始需要一個 private 的時候

不過,至於 value 在 setter 有用已經很方便了,但是新的 ,NET10 之後,在 getter 這邊可以使用到 field 這關鍵字

用法如下

public class FooObject { public string Token { get { return field; } set { field = value; } } }

所以配合 field 我們可以在 getter 那邊進行改造

public class FooObject { public string Token { get { if (field == null) field = Guid.NewGuid().ToString(); return field; } set { field = string.IsNullOrWhiteSpace(value) ? "empty" : value.Trim(); } } }

這應該是目前,看到 .NET10 進化裡面最簡單的一個關鍵字, field  他就猶如你寫了一個 private 的參數

你可以在裡面施展一些你想封裝的東西奇技淫巧

"field" 的核心價值是讓你不需要 private 欄位

也能在 getter 與 setter 裡建立完整邏輯,而且寫起來更簡潔

這邊附上 .NET9  跟 .NET10 的 MSIL 比較

.NET 9 單純 get;set;


.NET 10 field 後的 MSIL




當麻許的碎念筆記 2014 | Donma Hsu Design.