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

C# 3.0 匿名類型首發解析:從 PDC 2005 到編譯器生成機制

     編輯:關於C語言

歷史背景

PDC 2005 微軟同步展示 C# 2.0 與 C# 3.0 藍圖。匿名類型作為 LINQ 查詢投影的核心載體首次亮相。

定義:從對象初始化器推斷生成的元組類型

對象初始化器:為對象屬性指定值的語法({ Prop = value })。匿名類型即「源碼無名稱、編譯器根據初始化器生成」的類型。

關鍵點:編譯期生成,非運行期

使用 ILDASM 可見編譯器生成的實際類型結構。

編譯器處理流程


// 源碼
var p1 = new { Name = "A", Price = 3 };

// 編譯器轉化為等價顯式代碼
class __Anonymous1 
{
    private string _name;
    private int _price;
    public string Name { get => _name; set => _name = value; }
    public int Price { get => _price; set => _price = value; }
}
__Anonymous1 p1 = new __Anonymous1();
p1.Name = "A";
p1.Price = 3;

實戰環境搭建

  • VS2005 + .NET 2.0 + LINQ Preview
  • 新增項目模板:LINQ Console/Windows/Library

總結

匿名類型將「定義類型」與「創建實例」合二為一:聲明即定義,用完即走。編譯器自動生成私有字段、公共屬性、構造函數、Equals/GetHashCode/ToString 重寫,極大減少樣板代碼。理解其編譯期生成本質,是正確使用(如跨邊界映射)的前提。

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