本系列第二篇將介紹 C# 3.0 引入的多項語言改進,這些特性建立在 .NET 2.0 核心之上,極大地簡化了日常開發,也是後續 LINQ 技術的基石。
在 .NET 2.0 時代,定義一個屬性需要手寫私有欄位與存取邏輯:
public class User
{
private int _id;
private string _name;
private int _age;
public int Id
{
get { return _id; }
set { _id = value; }
}
// Name、Age 同理...
}
C# 3.0 允許編譯器自動產生背端欄位與預設存取器:
public class User
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
仍可單獨指定存取層級,例如 public string Name { get; private set; }。
使用 var 關鍵字,讓編譯器根據指派值推斷型別,並非動態型別,仍屬靜態強型別:
var number = 42; // int
var text = "Hello"; // string
var list = new List(); // List
適用於匿名類型、LINQ 查詢結果等無法預先宣告型別的情境。
以物件初始化器語法快速建立唯讀、不可繼承的參考型別:
var product = new { Id = 1, Name = "筆記型電腦", Price = 25000 };
Console.WriteLine(product.Name); // 編譯期檢查
同一組屬性名稱、順序、型別的匿名類型在同一組件中共用同一個型別定義。
物件初始化器允許在建構子呼叫後直接設定屬性,集合初始化器則簡化 Add 呼叫:
// 物件初始化器
var user = new User { Id = 1, Name = "Tom" };
// 集合初始化器
var numbers = new List { 1, 2, 3 };
var dict = new Dictionary { { 1, "One" }, { 2, "Two" } };
上述特性大幅減少樣板程式碼,提升可讀性。下一篇將詳細介紹擴充方法與 Lambda 運算式,敬請期待。