自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳解C# 4.0中的新對象ExpandoObject

開發(fā) 后端
本文我們將介紹C# 4.0中的新對象ExpandoObject,這個類的實例能夠在運行時動態(tài)的增加和刪除成員。

本文是介紹C#4.0中,也就是.NET4.0中的一個新對象ExpandoObject,希望通過對這個ExpandoObject類的介紹,能幫助大家更好的理解.NET4.0。

今天無意中看了4.0的一些新特性,其中看到SystemDynamic 命名空間下的ExpandoObject 類很感興趣,看了篇英文文章給大伙分享下。

先來看下該類的成員:http://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject_members(VS.100).aspx

ExpandoObject instances can add and remove members at run time.什么意思呢?這意味著此類的實例能夠在運行時動態(tài)的增加和刪除成員。其中有個新概念:dynamic language runtime (DLR)(動態(tài)語言運行時),我才疏學淺,還希望各位專家們多去研究下。

說說ExpandoObject這個動態(tài)特性的意義吧。我們用XML來做下對比:

首先我們創(chuàng)建一個XML對象,

  1. XElement contactXML =  
  2.     new XElement("Contact",  
  3.         new XElement("Name""Patrick Hines"),  
  4.         new XElement("Phone""206-555-0144"),  
  5.         new XElement("Address",  
  6.             new XElement("Street1""123 Main St"),  
  7.             new XElement("City""Mercer Island"),  
  8.             new XElement("State""WA"),  
  9.             new XElement("Postal""68042")  
  10.         )  
  11.     ); 

再來看看Dynamic對象,

  1. dynamic contact = new ExpandoObject();  
  2. contact.Name = "Patrick Hines";  
  3. contact.Phone = "206-555-0144";  
  4. contact.Address = new ExpandoObject();  
  5. contact.Address.Street = "123 Main St";  
  6. contact.Address.City = "Mercer Island";  
  7. contact.Address.State = "WA";  
  8. contact.Address.Postal = "68402"

首先,我們看下dynamic對象的聲明:dynamic contact = new ExpandoObject();

我沒有寫成 ExpandoObject contact = new ExpandoObject(), 因為我用靜態(tài)的ExpandoObject 類型來聲明則此對象沒有在運行時增加成員的特性,所以我使用新的關鍵字dynamic.

其次,大家能注意到,我創(chuàng)建一個子節(jié)點只需要創(chuàng)建一個ExpandoObject實例作為contact對象的成員。 這樣你可以很簡單的看清父子節(jié)點之間的關系,更重要的是你可以很簡單的訪問每一個元素。

用LINQ to XML:

  1. Console.WriteLine((string)contactXML.Element("Address").Element("State"));用 ExpandoObject對象:  
  2. Console.WriteLine(contact.Address.State);可是,當你有很多個contact對象時該怎么辦呢?呵呵,看代碼:Code//用XML 方式:XElement contactsXML =    new XElement  
  3. ("Contacts",        new XElement("Contact",            new XElement("Name""Patrick Hines"),   
  4.  new XElement("Phone""206-555-0144")        ),        new XElement("Contact",              
  5. new XElement("Name""Ellen Adams"),              
  6. new XElement("Phone""206-555-0155")        )    );//用dynamic對象:dynamic contacts = new List();  
  7. contacts.Add(new ExpandoObject());  
  8. contacts[0].Name = "Patrick Hines";  
  9. contacts[0].Phone = "206-555-0144";contacts.Add(new ExpandoObject());  
  10. contacts[1].Name = "Ellen Adams";contacts[1].Phone = "206-555-0155";  
  11. 再來看看用Linq to Object怎么來操作dynamic吧,  
  12.  var phones = from c in (contacts as List)
                 where c.Name == "Patrick Hines"
                 select c.Phone;

大家看了這個新特性有什么感受呢?想不想立刻感受下C# 4.0?不管怎么樣我是很期待啦。。希望.NET越來越強大~~

原文標題:C# 4.0 新對象ExpandoObject

鏈接:http://www.cnblogs.com/417533880/archive/2009/10/19/1585981.html

【編輯推薦】

  1. C#數(shù)組基礎介紹與操作詳解
  2. 淺析C#數(shù)組初始化性能測試
  3. C#數(shù)組操作詳細剖析
  4. 淺析C#數(shù)組操作方法
  5. C#數(shù)組和串操作經(jīng)驗總結(jié)
責任編輯:彭凡 來源: 博客園
相關推薦

2009-08-19 16:51:14

C# 4.0 dyna

2009-05-26 09:28:22

C# 4.0dynamic動態(tài)類型

2009-08-13 09:46:49

C#歷史C# 4.0新特性

2009-03-10 13:51:36

編譯器VS2010C#

2009-05-26 11:15:31

C# 4.0dynamicVisual Stud

2009-06-03 14:50:17

C# 4.0泛型協(xié)變性

2011-01-14 10:27:18

C#.netasp.net

2009-01-19 10:26:02

C#Namespace.NET

2010-08-17 09:57:39

C#

2009-08-03 18:24:28

C# 4.0協(xié)變和逆變

2009-08-03 11:32:49

C#調(diào)用COM對象

2009-02-03 09:33:26

動態(tài)類型動態(tài)編程C# 4.0

2009-05-08 09:46:37

微軟C#集合對象

2011-03-30 08:27:48

C#

2024-04-03 00:10:24

C#System數(shù)據(jù)

2010-01-05 09:26:13

.NET 4.0

2010-05-25 08:34:10

C# 4.0

2009-07-06 11:00:56

.NET 4.0新特性.NET

2024-03-19 14:18:48

C#后端編程

2009-08-03 15:06:43

C# Stack對象C# Queue對象
點贊
收藏

51CTO技術棧公眾號