Anonymous Type 是甚麼?
匿名型別是C# 3.0開始有的特性,是一種暫存型的型別,不需要建立額外的類別來存放資料
根據MSDN對於 匿名型別 的說明如下
根據MSDN的說明,整理一下重點及特性
1. 透過 new 建立實體
// Anonymous Type
var employee = new { Id = 1, Name = "Marcus", Age = 22 } ;
2. 不需要事先明確定義屬性型別
型別名稱會由編譯器產生,我們可以透過物件的object.GetType()方法來取得物件的型別名稱
以上述的例子,將滑鼠移到var上會發現產生的型別名稱為 f__Anonymous0'3
3. 唯讀屬性
公開且唯讀的屬性(Immutable types),屬性設定初始值後,無法再修改
4. 屬性類型由編譯器推斷
有在建立匿名型別物件時,其屬性類型會由編譯器自動推斷
以上述的例子,employee.Name與Age在建立時並未定義屬性類型
建立後滑鼠移上去即可發現類型已經自動指定為初始值屬性值類型
Name => String , Age => int嗎
使用場景
匿名型別帶來很多方便的地方,有時需要一個簡單的類別來儲存一些簡單的資料,但又不想為了簡單的需求另外定義一個類別(沒其他地方用到),這時就可以使用C#的匿名型別,或是有資料來源是兩個不同物件或類別,現在需要取得個別的其中一個屬性來做回傳,這時也可以使用匿名型別來產生新的載體,ex 使用LINQ使用進行JOIN後最後Select new 某某屬性,減少貧血類別的數量
參考
0 意見:
張貼留言