日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
解釋.NET之匿名對象(AnonymousObject)

本文旨在與園有分享我對 .NET 匿名對象的認(rèn)識,如果存在不足的地方歡迎指出。

創(chuàng)新互聯(lián)公司是由多位在大型網(wǎng)絡(luò)公司、廣告設(shè)計公司的優(yōu)秀設(shè)計人員和策劃人員組成的一個具有豐富經(jīng)驗的團(tuán)隊,其中包括網(wǎng)站策劃、網(wǎng)頁美工、網(wǎng)站程序員、網(wǎng)頁設(shè)計師、平面廣告設(shè)計師、網(wǎng)絡(luò)營銷人員及形象策劃。承接:成都網(wǎng)站設(shè)計、成都網(wǎng)站制作、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站改版、網(wǎng)頁設(shè)計制作、網(wǎng)站建設(shè)與維護(hù)、網(wǎng)絡(luò)推廣、數(shù)據(jù)庫開發(fā),以高性價比制作企業(yè)網(wǎng)站、行業(yè)門戶平臺等全方位的服務(wù)。

前言:最近園子里面大談程序員基礎(chǔ)知識的文章,基礎(chǔ)知識的重要性無需多論了??吹酱蠹覍A(chǔ)知識的評論后突然想到這么一個場景。曾經(jīng)有個同事問我:有一個匿名對象想做為一個函數(shù)的返回值,可以么?我當(dāng)時堅定的回答---不可以。而他也深信不疑,似乎真的實現(xiàn)不了。如果我沒記錯的話當(dāng)時是.NET3.5環(huán)境,如果當(dāng)時是.NET4.0的話我就大錯特錯了。

開始切入主題,我對.NET 匿名對象的認(rèn)識如下:

一、.NET3.5時代開始引入匿名對象概念

 .NET3.0 時,微軟加入了匿名對象到.net 中。javascript 程序員對匿名對象并不陌生。但是對于當(dāng)時的.NET程序員而言,應(yīng)該屬于一個新鮮事物。.NET4.0可以讓我們實例化對象而不需要為該對象定義類。如何理解“實例化對象而不需要為該對象定義類”,還是用代碼來解釋吧:

 
 
 
  1. private static Object GetAnonymousObj() 
  2.   Object anonymousObj = new { UserName = "admin", Password = "1111" }; 
  3.   return anonymousObj; 
  4. }

這里并未在實例化對象前為anonymousObj對象建立相關(guān)的類,所以稱anonymousObj對象為匿名對象。

二、.NET 4.0中將匿名對象作為函數(shù)返回值

回到本文開頭引入的前言部分-- 匿名對象可以作為函數(shù)返回值么?在.NET4.0中這個已經(jīng)成為現(xiàn)實。

請看一下代碼范例,將匿名對象作為返回值:

 
 
 
  1. private static Object GetAnonymousObj() 
  2.    Object anonymousObj = new { UserName = "admin", Password = "1111" }; 
  3.    return anonymousObj; 
  4. }

很簡單的一段代碼,讓我們將anonymousObj這個匿名對象作為了函數(shù)返回值。但是在調(diào)用該函數(shù)時發(fā)現(xiàn)了問題,我們沒法這樣做:

 
 
 
  1. Object obj = GetAnonymousObj();
  2. Console.WriteLine(obj.UserName); // 這里將無法編譯。因為obj對象是Object類型。

因此在.net3.5時,我告訴同事這個還是不要這樣實現(xiàn)的好。換個方法吧?當(dāng).NET4.0時代來臨時,我們的問題得到妥善的解決 ---- 首先由Dynamic 類型隆重登場:(Dynamic簡單介紹)

先將上文中的GetAnonymousObj函數(shù)改造成返回dynamic 類型:

 
 
 
  1. private static dynamic GetAnonymousObj() 
  2.    dynamic anonymousObj = new { UserName = "admin", Password = "1111" }; 
  3.   return anonymousObj; 
  4. }

接著調(diào)用GetAnonymousObj()方法:

 
 
 
  1. static void Main(string[] args) 
  2.   dynamic o = GetAnonymousObj(); 
  3.    Console.WriteLine(o.UserName); 
  4.   Console.ReadKey(); 
  5. }

輸出>>admin.

匿名對象也許在您的項目中運用的并不是很多,但我的項目大部分是建立在LinqToSQL的基礎(chǔ)上,所以我們常常會寫出這樣的代碼:在LINQ查詢語句中使用匿名對象。比如:

view sourceprint?1 var user = from user in Users

2  select new { user.Name, user.Id} //匿名對象

三、.NET中匿名對象的其他注意事項

匿名對象繼承于System.Object。

匿名對象屬性均為只讀屬性(ReadOnly)。

在同一個程序集內(nèi),兩個匿名對象具有相同的屬性、相同的屬性順序。編譯器將認(rèn)為這兩個匿名對象是相同的。

最后希望本篇文章可以給您帶來幫助,如有不足之處歡迎指出,謝謝!


網(wǎng)站名稱:解釋.NET之匿名對象(AnonymousObject)
新聞來源:http://www.dlmjj.cn/article/cdcphhj.html