国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
3.7.1 理解Lambda表達(dá)式(1)

3.7.1 理解Lambda表達(dá)式(1)

2010-12-23 13:07 張昌龍/辛永平 機(jī)械工業(yè)出版社 字號(hào):T | T

《ASP.NET 4.0從入門(mén)到精通》第3章C# 4.0語(yǔ)言特色,本章討論在C# 4.0語(yǔ)言中許多增強(qiáng)的功能。首先介紹隱式類(lèi)型聲明,由編譯器根據(jù)上下文進(jìn)行類(lèi)型推斷,接下來(lái)討論使用自動(dòng)屬性功能簡(jiǎn)化編寫(xiě)重復(fù)性的屬性代碼。對(duì)象初始化器可以簡(jiǎn)化開(kāi)發(fā)人員的賦值代碼,接下來(lái)討論如何對(duì)一個(gè)現(xiàn)有類(lèi)進(jìn)行擴(kuò)展的擴(kuò)展方法。本節(jié)為大家介紹Lambda表達(dá)式。

AD:51CTO首屆中國(guó)APP創(chuàng)新評(píng)選大賽正在招募>>

3.7   Lambda表達(dá)式

在C# 2.0中,引入了一個(gè)匿名方法的特性,使開(kāi)發(fā)人員可以直接為委托添加方法語(yǔ)句塊,而不需要顯式地創(chuàng)建一個(gè)單獨(dú)的方法。在C# 4.0中,提供了一個(gè)更加簡(jiǎn)法的方法來(lái)處理.NET中的委托類(lèi)型,即Lambda表達(dá)式。

3.7.1   理解Lambda表達(dá)式(1)

【范例3.21】為了更好地講述Lambda表達(dá)式以便于理解,在本小節(jié)同樣先創(chuàng)建一個(gè)控制臺(tái)應(yīng)用程序,命名為L(zhǎng)ambdaDemo。在本示例中,首先舉一個(gè)匿名方法的例子,然后看看Lambda表達(dá)式是如何聲明并簡(jiǎn)化匿名方法的代碼的。

首先舉一個(gè)傳統(tǒng)的使用委托的例子。在泛型List中,有一個(gè)重載的FindAll方法,該方法的一個(gè)重載版本接受一個(gè)謂詞委托,也就是一個(gè)用一個(gè)委托作為參數(shù),開(kāi)發(fā)人員需要?jiǎng)?chuàng)建一個(gè)單獨(dú)的方法來(lái)傳遞給FindAll方法,以便對(duì)List中的每個(gè)項(xiàng)進(jìn)行判斷。示例代碼如下所示:

  1. 01  using System;  
  2. 02  using System.Collections.Generic;  
  3. 03  using System.Linq;  
  4. 04  using System.Text;  
  5. 05  namespace LambdaDemo  
  6. 06  {  
  7. 07     class Program  
  8. 08     {  
  9. 09         static void Main(string[] args)  
  10. 10         {  
  11. 11              Console.WriteLine("傳統(tǒng)的委托代碼示例, 運(yùn)行結(jié)果為:");  
  12. 12              FindListDelegate();  
  13. 13         }  
  14. 14          //傳統(tǒng)的調(diào)用委托的示例  
  15. 15          static void FindListDelegate()  
  16. 16          {  
  17. 17               //先創(chuàng)建一個(gè)泛型的List類(lèi)  
  18. 18              List<string> list = new List<string>();  
  19. 19              list.AddRange(new string[] {"語(yǔ)言書(shū)", 
    "軟件書(shū)","政治","圖書(shū)","開(kāi)發(fā)人員"});  
  20. 20              Predicate<string> findPredicate = new 
    Predicate<string>(IsBookCategory);  
  21. 21              List<string> bookCategory = list.
    FindAll(findPredicate);  
  22. 22              foreach (string str in bookCategory)  
  23. 23              {  
  24. 24                  Console.WriteLine("{0}\t", str);  
  25. 25              }  
  26. 26          }  
  27. 27          //謂詞方法, 這個(gè)方法將被傳遞給FindAll方法進(jìn)行書(shū)籍分類(lèi)的判斷  
  28. 28          static bool IsBookCategory(string str)  
  29. 29          {  
  30. 30               return str.EndsWith("書(shū)") ? true : false;  
  31. 31          }  
  32. 32     }  
  33. 33  } 

【代碼解析】在這段代碼中,為Predicate<string>委托創(chuàng)建了一個(gè)單獨(dú)的方法IsBookCategory,這個(gè)方法判斷字符串中是否以“書(shū)”這個(gè)字符結(jié)尾,如果是,則表示符合查詢的要求,否則將進(jìn)行排除。這段代碼的運(yùn)行效果如圖3.18所示。

 
(點(diǎn)擊查看大圖)圖3.18   傳統(tǒng)的委托方法的運(yùn)行示例
下面演示一下使用匿名方法來(lái)簡(jiǎn)化對(duì)傳統(tǒng)委托的代碼構(gòu)建過(guò)程,這里添加一個(gè)新的方法FindListAnonymousMethod。這個(gè)方法的代碼如下所示:
  1. //使用匿名方法來(lái)進(jìn)行搜索過(guò)程  
  2. static void FindListAnonymousMethod()  
  3. {  
  4.      //先創(chuàng)建一個(gè)泛型的List類(lèi)  
  5.      List<string> list = new List<string>();  
  6.      list.AddRange(new string[] {"語(yǔ)言書(shū)", "軟件書(shū)", "政治", "圖書(shū)", "開(kāi)發(fā)人員" });  
  7.      //在這里, 使用匿名方法直接為委托創(chuàng)建一個(gè)代碼塊, 而不用去創(chuàng)建單獨(dú)的方法  
  8.      List<string> bookCategory = list.FindAll  
  9.           (delegate(string str)  
  10.           {  
  11.                return str.EndsWith("書(shū)") ? true : false;  
  12.           }  
  13.           );  
  14.       foreach (string str in bookCategory)  
  15.       {  
  16.           Console.WriteLine("{0}\t", str);  
  17.       }  
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
匿名方法---將代碼塊作為參數(shù)傳遞給委托 - さびしい.Net/Java技術(shù)與技巧 - C...
到現(xiàn)在為止你還未觸碰LINQ,那進(jìn)來(lái)吧 —— LINQ入門(mén)(中篇)
基礎(chǔ)知識(shí)---委托和 lambda
F
Java中的Lambda表達(dá)式
Java|Java8 新特性
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服