只有累積,沒有奇蹟

2018年11月10日 星期六

[C#] Anonymous Type 匿名型別

說明
Anonymous Type 是甚麼?
匿名型別是C# 3.0開始有的特性,是一種暫存型的型別不需要建立額外的類別來存放資料
根據MSDN對於 匿名型別 的說明如下








根據MSDN的說明
整理一下重點及特性
1. 透過 new 建立實體 
// Anonymous Typevar employee = new { Id = 1, Name = "Marcus", Age = 22 } ;
要使用時透過 匿名物件初始設定(anonymous object initializer) 來建立實體不需要先定義employee物件的prop或是屬性
2. 不需要事先明確定義屬性型別





型別名稱會由編譯器產生,我們可以透過物件的object.GetType()方法來取得物件的型別名稱
以上述的例子,將滑鼠移到var上會發現產生的型別名稱為 f__Anonymous0'3

3. 唯讀屬性 






公開且唯讀的屬性(Immutable types)
,屬性設定初始值後,無法再修改

4. 屬性類型由編譯器推斷






在建立匿名型別物件時,其屬性類型會由編譯器自動推斷
以上述的例子,employee.Name與Age在建立時並未定義屬性類型
建立後滑鼠移上去即可發現類型已經自動指定為初始值屬性值類型
Name => String , Age => int

使用場景

匿名型別帶來很多方便的地方有時需要一個簡單的類別來儲存一些簡單的資料但又不想為了簡單的需求另外定義一個類別(沒其他地方用到),這時就可以使用C#的匿名型別,或是資料來源是兩個不同物件或類別,現在需要取得個別的其中一個屬性來做回傳,這時也可以使用匿名型別來產生新的載體,ex 使用LINQ使用進行JOIN後最後Select new 某某屬性減少貧血類別的數量

參考

Huan-Lin 學習筆記: C# 筆記:匿名型別


0 意見:

張貼留言

Copyright © m@rcus 學習筆記 | Powered by Blogger

Design by Anders Noren | Blogger Theme by NewBloggerThemes.com