日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
詳解C#4.0中的新對(duì)象ExpandoObject

本文是介紹C#4.0中,也就是.NET4.0中的一個(gè)新對(duì)象ExpandoObject,希望通過(guò)對(duì)這個(gè)ExpandoObject類(lèi)的介紹,能幫助大家更好的理解.NET4.0。

創(chuàng)新互聯(lián)建站專(zhuān)注于企業(yè)營(yíng)銷(xiāo)型網(wǎng)站、網(wǎng)站重做改版、鼓樓網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站、成都做商城網(wǎng)站、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為鼓樓等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。

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

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

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

說(shuō)說(shuō)ExpandoObject這個(gè)動(dòng)態(tài)特性的意義吧。我們用XML來(lái)做下對(duì)比:

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

 
 
 
  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.     );

再來(lái)看看Dynamic對(duì)象,

 
 
 
  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對(duì)象的聲明:dynamic contact = new ExpandoObject();

我沒(méi)有寫(xiě)成 ExpandoObject contact = new ExpandoObject(), 因?yàn)槲矣渺o態(tài)的ExpandoObject 類(lèi)型來(lái)聲明則此對(duì)象沒(méi)有在運(yùn)行時(shí)增加成員的特性,所以我使用新的關(guān)鍵字dynamic.

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

用LINQ to XML:

 
 
 
  1. Console.WriteLine((string)contactXML.Element("Address").Element("State"));用 ExpandoObject對(duì)象:
  2. Console.WriteLine(contact.Address.State);可是,當(dāng)你有很多個(gè)contact對(duì)象時(shí)該怎么辦呢?呵呵,看代碼: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對(duì)象: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. 再來(lái)看看用Linq to Object怎么來(lái)操作dynamic吧,
  12.  var phones = from c in (contacts as List )
                 where c.Name == "Patrick Hines"
                 select c.Phone;

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

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


當(dāng)前名稱:詳解C#4.0中的新對(duì)象ExpandoObject
本文地址:http://www.5511xx.com/article/cdeejsj.html