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/setget; 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" }
};
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 設定綁定等現代框架慣用語的基石。
語法糖非糖衣炮彈,而是降低認知負荷、減少樣板碼、釋放開發者專注於業務邏輯的生產力杠桿。