成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

解釋.NET之匿名對象(AnonymousObject)

開發 后端
今天我們要談談.NET中的匿名對象(AnonymousObject),希望對大家了解更多基礎知識有所幫助。

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

前言:最近園子里面大談程序員基礎知識的文章,基礎知識的重要性無需多論了。看到大家對基礎知識的評論后突然想到這么一個場景。曾經有個同事問我:有一個匿名對象想做為一個函數的返回值,可以么?我當時堅定的回答---不可以。而他也深信不疑,似乎真的實現不了。如果我沒記錯的話當時是.NET3.5環境,如果當時是.NET4.0的話我就大錯特錯了。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

接著調用GetAnonymousObj()方法:

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

輸出>>admin.

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

view sourceprint?1 var user = from user in Users 

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

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

匿名對象繼承于System.Object。

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

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

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

原文鏈接:http://www.cnblogs.com/ryanding/archive/2010/12/14/1904374.html

【編輯推薦】

  1. .NET Framework字符串相關操作細節介紹
  2. 詳解.NET字符串解析的具體過程
  3. 改進C#連接字符串的性能
  4. .NET Lambda表達式的語義:字符串列表范例
  5. C#字符串的幾種常用方法

責任編輯:彭凡 來源: 博客園
相關推薦

2009-09-01 10:58:46

C#匿名類型對象

2010-01-05 15:43:13

.NET Framew

2009-12-30 15:17:06

ADO.NET選項

2009-07-28 13:02:28

asp.net

2009-03-13 10:12:18

變量共享匿名方法.NET

2013-08-21 17:20:49

.NET面向對象

2009-12-09 09:30:55

Visual Stud

2009-12-22 14:52:54

ADO.NET腳本

2009-12-22 15:51:18

ADO.NET代碼

2009-12-23 15:13:15

Ado.Net Syb

2020-10-05 21:33:15

隱私數據匿名數據安全

2014-01-21 09:15:12

Python函數

2010-01-04 14:11:51

ADO.Records

2014-01-21 09:42:32

Python代碼對象

2021-07-07 10:31:19

對象池模式解釋器模式設計模式

2010-01-14 14:30:09

VB.NET匿名類型

2009-12-18 14:01:07

ADO.NET體系結構

2017-01-05 15:13:03

Java數組算法解釋

2009-07-30 18:32:42

2009-11-24 13:23:11

Visual Stud
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲电影一区二区三区 | 精品毛片 | av激情在线| 欧美精品一二三 | 日产精品久久久一区二区福利 | 久久久成人网 | 毛片一区 | 午夜影院在线观看 | 天天碰日日操 | 国产性色视频 | 91精品国产日韩91久久久久久 | 欧产日产国产精品国产 | 免费激情av | 国产午夜久久久 | 国产免费一区二区三区最新6 | 成人影院网站ww555久久精品 | 91精品国产一区二区三区 | 99re在线视频精品 | 色婷婷综合在线观看 | 综合一区 | 日韩欧美在线视频 | 成人黄色a | 亚洲自拍一区在线观看 | 国产精品成人一区 | 91精品国产色综合久久 | 欧美福利视频一区 | 日韩欧美在线免费 | 久久久久久久一区 | 亚洲高清一区二区三区 | 97免费在线视频 | 亚洲每日更新 | 亚洲国产一区二区三区 | www国产成人免费观看视频 | 国产成人精品一区 | 亚洲国产精品日韩av不卡在线 | 欧美二区在线 | 久久亚洲一区二区 | 亚洲人成在线观看 | 在线黄色影院 | 影音先锋欧美资源 | 久久精品久久久久久 |