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

教你寫不可思議的C#代碼

開發 后端
雖然.NET4中已經引入了dynamic的動態類型,但是它相對于其他的來說還是不盡人意,不過下面要介紹的一個開源項目會讓您能夠寫出不可思議的C#代碼。

   .Net 4 中引入了 dynamic 動態類型,這一消息確實讓我們興奮了一把,但是興奮之余,又發現它相對于其他的動態語言來說還有不足之處。不過借助 CodePlex 上的一個開源項目 Clay,我們可以寫出以下不可思議的代碼,代碼如下:

  1. var directory = New.Array(  
  2.     New.Person(  
  3.         FirstName: "Louis",  
  4.         LastName: "Dejardin",  
  5.         Aliases: new[] { "Lou" }  
  6.     ),  
  7.     New.Person(  
  8.         FirstName: "Bertrand",  
  9.         LastName: "Le Roy" 
  10.     ).Aliases("bleroy""boudin"),  
  11.     New.Person(  
  12.         FirstName: "Renaud",  
  13.         LastName: "Paquay" 
  14.     ).Aliases("Your Scruminess""Chef")  
  15. ).Name("Some Orchard folks"); 

       讓我們先來看看是代碼是如何的不可思議。

不可思議的對象初始化
新建 c# 項目,引用 Clay 項目(或其 dll), 并加入下面一行代碼(建議看完本文再自行嘗試):

  1. dynamic New = new ClayFactory(); 

先看下面的簡單代碼:

  1. var person = New.Person();  
  2. person.FirstName = "Louis"
  3. ;person.LastName = "Dejardin"

不足為奇,使用 .Net 4 中的 ExpandoObject 也能做到。

下面的代碼就有點意思了:

  1. var person = New.Person();  
  2. person["FirstName"] = "Louis";  
  3. person["LastName"] = "Dejardin"

這段代碼和上面的效果是一樣的,它使用索引器的方式為 person 的屬性賦值,是不是有點類似 JavaScript?

再來看 jQuery 風格的代碼:

  1. var person = New.Person()  
  2.     .FirstName("Louis")  
  3.     .LastName("Dejardin"); 

還可以使用匿名類型方式:

  1. var person = New.Person(new {  
  2.     FirstName = "Louis",  
  3.     LastName = "Dejardin" 
  4. }); 

甚至還可以使用命名參數方式:

  1. var person = New.Person(  
  2.     FirstName: "Louis",  
  3.     LastName: "Dejardin" 
  4. ); 

不可思議吧!

綜上所述,我們有多種方式始化實體設置屬性值,以下方式都是等同的:

  1. person.FirstName  
  2. person["FirstName"]  
  3. person.FirstName() 

不可思議的 Array
我們可以創建 JavaScript 風格的 Array:

  1. var people = New.Array(  
  2.     New.Person().FirstName("Louis").LastName("Dejardin"),  
  3.     New.Person().FirstName("Bertrand").LastName("Le Roy")  
  4. ); 

可如下操作這個集合:

  1. int count = people.Count;  
  2. string firstName = people[0].FirstName; 

我們還可以給實例動態增加 array 屬性:

  1. person.Aliases("bleroy""BoudinFatal"); 

或者:

  1. person.Aliases(new[] {"Lou"}); 

還能向集合中增加新的元素:

  1. person.Aliases.Add("loudej"); 

到這里,寫出文首給出的 c# 代碼應該不成問題了。

不可思議的動態接口實現
“動態接口實現”這個標題可能不太恰當,還是通過代碼來說明問題吧。假定我們有如下接口:

  1. public interface IPerson {  
  2.     string FirstName { getset; }  
  3.     string LastName { getset; }  

可以如下使用:

  1. dynamic New = new ClayFactory();  
  2. var people = New.Array(  
  3.     New.Person().FirstName("Louis").LastName("Dejardin"),  
  4.     New.Person().FirstName("Bertrand").LastName("Le Roy")  
  5. );  
  6. IPerson lou = people[0];  
  7. var fullName = lou.FirstName + " " + lou.LastName; 

只不過是我們通過 New.Person() 創建的一個動態對象,并沒有實現 IPerson 接口啊,可就是能編譯并運行通過:

神器

 

神奇吧!還不抓緊試試!

   Clay 是 CodePlex 上的一個開源項目,幫助我們創建輕松創建對象,就 JavaScript 或其它動態語言一樣簡單。Clay 項目的網址是 http://clay.codeplex.com,目前沒有發布好的下載,我們可以直接下載它的源碼
 

【編輯推薦】

  1. Lambda簡化C#編程學習心得
  2. C#圖片處理的3種高級實用方法
  3. C#不如Java的地方:靜態導入
  4. 10個C#編程和Visual Studio使用技巧

 

責任編輯:佚名 來源: 網摘
相關推薦

2013-10-10 13:07:25

方物

2017-03-21 08:52:20

神經網絡聲譽

2010-07-15 16:21:03

不可思議的服務器

2021-11-10 06:38:01

Python鏈式操作

2020-07-02 15:40:11

Spring BootJar包Java

2022-01-24 15:57:34

Python返回功能代碼

2011-07-18 13:35:14

HTML 5

2023-04-06 09:44:00

ChatGPT行業質量

2013-07-31 15:06:58

未來的WebWebGLWeb

2014-07-26 22:18:51

2014-01-14 10:33:42

開源硬件開源

2017-11-08 14:07:45

數據庫MySQL慢查分析

2012-02-13 11:01:27

N9Android 4.0

2016-07-06 11:56:52

思科漢堡光纖骨干網

2020-04-28 11:30:02

Java 代碼工具

2012-05-16 17:28:32

智能手機

2024-04-07 00:00:00

億級數據ES

2023-04-04 22:31:11

GPT-5人工智能

2021-03-03 07:12:47

Windows10操作系統微軟

2014-11-13 10:08:21

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产传媒在线观看 | 美女天天操| 91精品国产91久久久久久三级 | 成人av免费网站 | 天堂免费看片 | 午夜免费在线 | 国产成年人小视频 | 人人看人人干 | 天堂成人国产精品一区 | 国产91精品久久久久久久网曝门 | 天天干天天插 | 999观看免费高清www | 亚洲一区二区在线视频 | www.天堂av.com| 久久伊人影院 | 国产精品久久久久久久免费大片 | 黄视频免费在线 | 日本久久精品 | 亚洲国产高清高潮精品美女 | 亚洲综合色视频在线观看 | 欧美一区二区三区久久精品 | 国产精品日日做人人爱 | 国产精品 欧美精品 | 在线国产一区 | 男人的天堂一级片 | 99热播精品 | 成人午夜网站 | 国产精品无码专区在线观看 | 成人久草 | 欧美性精品 | 97精品超碰一区二区三区 | 免费成人高清 | 欧美性网 | 色综合天天天天做夜夜夜夜做 | 久久婷婷麻豆国产91天堂 | 久久精品国产一区二区 | 日韩成人精品在线 | 精品国产99 | 韩国av一区二区 | 精品二| 91亚洲国产成人久久精品网站 |