C 3 0 為我們帶來什麼(5) 匿名型別

2022-02-28 09:47:33 字數 445 閱讀 8168

var employee= new

無須顯示宣告乙個類,而且在初始化器裡面可以獲取上下文的變數——閉包

這就是c#3.0裡提供的匿名型別。

並且可以對宣告的型別進行這樣的訪問

string name = employee.name;

來看看il的實現。

.method public hidebysig instance void  dd() cil managed

// end of method testvar::dd

看到**會想'<>f__anonymoustype0`2'從何而來呢?

來看il檢視就知道了。

雖然匿名型別非常方便,但是我們無法通過**來訪問到'<>f__anonymoustype0`2',而且var不能定義全域性變數與引數型別,所以導致了我們建立的匿名型別例項只能應用在函式內部。從而限制了匿名型別的使用。

C 3 0 為我們帶來什麼(6) 擴充套件方法

在c 3.0中可以出現這樣的語法 int i 2 console.writeline i.square 這就是擴充套件方法。如何使int具有square方法呢?只需要定義這樣乙個函式 public static int square this int i this 表示針對int的例項和索引器的th...

C 3 0特性之 匿名型別

匿名型別提供了一種方便的方法,可用來將一組唯讀屬性封裝到單個物件中,而無需首先顯式定義乙個型別。型別名由編譯器生成,並且不能在源 級使用。每個屬性的型別由編譯器推斷。可通過使用 new 運算子和物件初始值建立匿名型別。var person new console.writeline date.use...

C 3 0新特性之匿名型別

c 3.0允許將 new和乙個匿名物件初始化器一起來建立乙個匿名型別的物件。具體語法格式為 匿名物件建立表示式 new 匿名物件初始化器 匿名物件初始化器 成員宣告器列表 成員宣告器 成員宣告器列表,成員宣告器 成員宣告器 簡單名稱 成員訪問 識別符號 表示式 賦值表示式 注 簡單名稱就是已經定義在...