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

C# 3.0 匿名類型特性詳解(一):動機、對象初始化器基礎與樣板代碼消除

     編輯:關於C語言

動機:臨時數據聚合的樣板代碼痛點

查詢投影僅需 Name、Price,卻須寫完整類:


public class BookAsGood
{
    private string _name; private decimal _price;
    public string Name { get => _name; set => _name = value; }
    public decimal Price { get => _price; set => _price = value; }
}

屬性多時代碼量巨大,維護負擇重。

解決方案:匿名類型 + 對象初始化器

C# 3.0 允許無類型名的 new 表達式配合對象初始化器:


var book = new { Name = "C#", Price = 100m };
// 編譯器自動生成:私有字段、公共屬性、構造函數、Equals/GetHashCode/ToString

對象初始化器基礎

為對象屬性指定值的語法:{ Prop = value }。匿名類型建立在對象初始化器之上,「初始化器即類型定義」。

編譯期生成,非運行期

使用 ILDASM 可見編譯器生成的具體類型(如 <Projection>f__0),源碼層面無名稱。

總結

匿名類型將「定義類型」與「創建實例」融合為單一聲明式語法,編譯器承擔樣板代碼生成職責。適用於查詢投影、臨時聚合、配置對象等「形狀重要、名稱不重要」場景,是 LINQ 查詢表達式 select new { ... } 的核心載體。

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