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

  • 19
  • 0

最近 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


 

本文原文首發於我的個人部落格:C#14的新關鍵字 field , .NET 10 之後才能用
 

---

Yesterday I wrote down the code. I bet I could be your hero. I am a mighty little programmer.