C# 3.0 引入 匿名型別 與 隱含型別區域變數 (var),兩者緊密配合,簡化臨時資料結構定義與 LINQ 查詢投射。
null (無法推斷);不可改變推斷型別 (如 var i=5; i="s" 錯誤)。var dict = new Dictionary>() )。var s = "str") 仍建議顯式宣告以提升可讀性。
var person = new { Name = "Yuyi", Age = 20, Skills = new[] { "C#", "SQL" } };
// 編譯器產生內部密封類別:
// <>f__AnonymousType0`3
// 屬性唯讀:Name, Age, Skills
Equals/GetHashCode/ToString,逐屬性比較。匿名型別無名稱,必須搭配 var 讓編譯器推斷型別:
var q = from c in customers
where c.City == "Taipei"
select new { c.Name, c.Email, OrderCount = c.Orders.Count };
// q 型別為 IEnumerable<匿名型別>
foreach (var item in q) Console.WriteLine(item.Name);
若需跨方法傳遞,請投射至具名型別 (DTO/Record):
public record CustomerSummary(string Name, string Email, int OrderCount);
var list = q.Select(x => new CustomerSummary(x.Name, x.Email, x.OrderCount)).ToList();