c 匿名型別

2021-08-31 06:44:30 字數 1010 閱讀 2157

匿名型別

允許我們建立無名類型別的特性。匿名型別(anonymous type)經常用於linq查詢的結果中。 

第6章介紹了物件初始化語句,它允許我們在使用物件建立表示式時初始化新類例項的字段和屬性。提醒一下,這種形式的物件建立表示式由三部分組成:new關鍵字、類名或建構函式以及物件初始化語句。物件初始化語句在一組大括號內包含了以逗號分隔的成員初始化列表。 

建立匿名型別的變數使用相同的形式,但是沒有類名和建構函式。如下的**行演示了匿名型別的物件建立表示式:

沒有類名

↓new

↑成員初始化語句

例:建立和使用匿名型別的示例。

class program

; console.writeline(",age ,major: ",student.name,student.age,studeng.major);}}

需要了解的有關匿名型別的重要事項如下。

當編譯器遇到匿名型別的物件初始化語句時,它建立乙個有名字的新類型別。低於每個成員初始化語句,它推斷其型別並建立乙個唯讀屬性來訪問它的值。屬性和成員初始化語句具有相同名字。匿名型別被構造後,編譯器建立了這個型別的物件。 

除了物件初始化語句的賦值形式,匿名型別的物件初始化語句還有其他兩種允許的形式:簡單識別符號和成員訪問表示式。這兩種形式叫做投影初始化語句(projection initializer)。下面的變數宣告演示了3種形式。

var student=new;
例:使用3總初始化語句。注意,投影初始化語句必須定義在匿名型別宣告之前。

class other

class program

; console.writeline(",age ,major: ",student.name,student.age,studeng.major);}}

如果編譯器遇到了另乙個具有相同的引數名、相同的推斷型別和相同順序的匿名型別,它會重用這個型別並直接建立新的例項,不會建立新的匿名型別。

C 匿名型別

c 3.0引入了對匿名型別的支援。它們是由編譯器動態生成的資料型別,而不是通過顯示地類定義來宣告的。下面通過乙個例子介紹匿名型別的使用 示例 將匿名型別的例項賦給隱式型別的區域性變數 執行結果 注意 除非使用lambda表示式和查詢表示式關聯來自不同型別的資料,或者對資料進行水平投射 以減少乙個特定...

C 匿名型別

當我們想要在 中建立乙個物件,需要用 new object 來建立,如果這個物件裡面有一些 屬性我們想要在 new 時就初始化,那麼我們會重寫 乙個建構函式。如果不想重寫乙個 建構函式 該如何做?例子如下 自定義乙個類 point.cs class point 如果不想寫上面 帶初始化x,y的建構函...

C 匿名型別

一 什麼叫做匿名類?匿名類就是沒有名字的類。匿名類不能被引用,只能再建立的時候用new語句來宣告。二 匿名類的優勢以及應用場景 1 匿名型別提供了一種方便的方法,可以用來將一組唯讀屬性封裝到單個的物件中,而且並不需要首先顯示定義乙個型別。2 型別名由編譯器生成,並且不能在源 級使用。每個屬性的型別由...