首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 3.0 (Orcas) 新特性前瞻:自動屬性、物件/集合初始化器的語法糖革命

     編輯:關於C#

Visual Studio "Orcas" (VS 2008) 引入 C# 3.0,雖無運行時變更,但語法糖極大提升開發效率與程式碼可讀性,為後續 LINQ、Lambda 奠基。

自動屬性


// C# 2.0 冗長寫法
private string _firstName;
public string FirstName {
    get => _firstName;
    set => _firstName = value;
}

// C# 3.0 自動屬性
public string FirstName { get; set; } // 編譯器自動產生 backing field + get/set
public string LastName  { get; set; }
public int Age          { get; set; }
  • 編譯期展開:私有欄位 <FirstName>k__BackingField + 公開 get/set
  • 未來可平滑遷移至手寫屬性加驗證,二進位相容(介面不變)
  • C# 6+ 進化:get; init;(不可變)、get; private set;(存取控制)

物件初始化器


// 傳統
var p = new Person();
p.FirstName = "Scott";
p.LastName = "Guthrie";
p.Age = 32;

// C# 3.0 單行
var p = new Person { FirstName = "Scott", LastName = "Guthrie", Age = 32 };

// 巢狀初始化
var p = new Person {
    FirstName = "Scott",
    Address = new Address { Street = "One Microsoft Way", City = "Redmond" }
};
  • 編譯器產生建構後依序呼叫 setter,語義等價
  • 需有無參建構函式(或對應參數建構函式配合 with 表達式 C# 9+)

集合初始化器


// 傳統 Add 連呼
var list = new List();
list.Add(new Person { FirstName="Scott", LastName="Guthrie", Age=32 });
list.Add(new Person { FirstName="Bill", LastName="Gates", Age=50 });

// C# 3.0 集合初始化器
var list = new List {
    new Person { FirstName="Scott", LastName="Guthrie", Age=32 },
    new Person { FirstName="Bill", LastName="Gates", Age=50 },
    new Person { FirstName="Susanne", LastName="Guthrie", Age=32 }
};

// 字典初始化
var dict = new Dictionary {
    ["Scott"] = 32,
    ["Bill"] = 50
};
  • 適用於實作 IEnumerable 且有 Add 方法的類型
  • 編譯器展開為連續 Add 呼叫

綜合效果


// 建立複雜物件圖:從 20+ 行縮減至 8 行
var team = new Team {
    Name = "CoreCLR",
    Members = new List {
        new { Name="Scott", Role="PM" },
        new { Name="David", Role="Dev" }
    },
    Settings = new Dictionary { ["Repo"]="github.com/dotnet/runtime" }
};

歷史定位

C# 3.0 五大特性(自動屬性、物件/集合初始化器、Lambda、擴充方法、匿名型別、LINQ)共同構成「聲明式程式設計」轉折點。雖本文僅涵蓋前三項,但它們是後續 LINQ 查詢語法、Entity Framework 實體初始化、ASP.NET Core 設定綁定等現代框架慣用語的基石。

語法糖非糖衣炮彈,而是降低認知負荷、減少樣板碼、釋放開發者專注於業務邏輯的生產力杠桿。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved