国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

C#迭代器局部變量

開發 后端
這里介紹C#迭代器局部變量,IEnumerator就是C#迭代器的接口,相當于我的實例里面的Iterator,它也有泛型的版本。

C#迭代器還是比較常見的東西,這里我們主要介紹C#迭代器局部變量,包括介紹C#里出現了foreach關鍵字等方面。

看看***的測試,是不是不管具體的集合如何改變,遍歷代碼都非常穩定?而且擴展新的集合類也非常方便,只是添加代碼不會修改原來的代碼,符合開閉原則。當然,這么好的解決方案微軟當然不會放過,現在C# 2.0里已經內置了對C#迭代器的支持,看看System.Collections, System.Collections.Generic命名空間,所有的集合都實現了這個接口:IEnumerable,這個接口還有泛型的版本。注意到這個接口只有一個方法:IEnumerator GetEnumerator();,IEnumerator就是C#迭代器的接口,相當于我的實例里面的Iterator,它也有泛型的版本。

那么現在在.net里所有的集合類都可以這樣訪問了:

  1. IEnumerator ienumerator = list.GetEnumerator();  
  2. while(ienumerator.MoveNext())  
  3. {  
  4. object current = ienumerator.Current;  

但是這樣訪問也太麻煩了,所以C#里出現了foreach關鍵字,我們來看看foreach背后發生了什么

  1. public static void Main()  
  2. {  
  3. ArrayList list = new ArrayList();  
  4. list.Add(1);  
  5. list.Add(2);  
  6. list.Add(3);  
  7. foreach (object item in list)  
  8. {  
  9. Console.WriteLine(item.ToString());  
  10. }  
  11. }  

下面是它對應的IL代碼:

  1. .method private hidebysig static void Main() cil managed  
  2. {  
  3. .entrypoint  
  4. .maxstack 2  
  5. .locals init (  
  6. [0] class [mscorlib]System.Collections.ArrayList list,  
  7. [1] object item,  
  8. [2] class [mscorlib]System.Collections.IEnumerator CS$5$0000,  
  9. [3] class [mscorlib]System.IDisposable CS$0$0001)  
  10. L_0000: newobj instance void [mscorlib]System.Collections.ArrayList::.ctor()  
  11. L_0005: stloc.0   
  12. L_0006: ldloc.0   
  13. L_0007: ldc.i4.1   
  14. L_0008: box int32  
  15. L_000d: callvirt instance int32 [mscorlib]System.Collections.ArrayList::Add(object)  
  16. L_0012: pop   
  17. L_0013: ldloc.0   
  18. L_0014: ldc.i4.2   
  19. L_0015: box int32  
  20. L_001a: callvirt instance int32 [mscorlib]System.Collections.ArrayList::Add(object)  
  21. L_001f: pop   
  22. L_0020: ldloc.0   
  23. L_0021: ldc.i4.3   
  24. L_0022: box int32  
  25. L_0027: callvirt instance int32 [mscorlib]System.Collections.ArrayList::Add(object)  
  26. L_002c: pop   
  27. L_002d: ldloc.0   
  28. L_002e: callvirt instance class [mscorlib]System.Collections.IEnumerator [mscorlib]
  29. System.Collections.ArrayList::GetEnumerator()  
  30. L_0033: stloc.2   
  31. L_0034: br.s L_0048  
  32. L_0036: ldloc.2   
  33. L_0037: callvirt instance object [mscorlib]System.Collections.IEnumerator::get_Current()  
  34. L_003c: stloc.1   
  35. L_003d: ldloc.1   
  36. L_003e: callvirt instance string [mscorlib]System.Object::ToString()  
  37. L_0043: call void [mscorlib]System.Console::WriteLine(string)  
  38. L_0048: ldloc.2   
  39. L_0049: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext()  
  40. L_004e: brtrue.s L_0036  
  41. L_0050: leave.s L_0063  
  42. L_0052: ldloc.2   
  43. L_0053: isinst [mscorlib]System.IDisposable  
  44. L_0058: stloc.3   
  45. L_0059: ldloc.3   
  46. L_005a: brfalse.s L_0062  
  47. L_005c: ldloc.3   
  48. L_005d: callvirt instance void [mscorlib]System.IDisposable::Dispose()  
  49. L_0062: endfinally   
  50. L_0063: call string [mscorlib]System.Console::ReadLine()  
  51. L_0068: pop   
  52. L_0069: ret   
  53. .try L_0034 to L_0052 finally handler L_0052 to L_0063  

從.locals init 那里可以看出編譯器為我們添加了兩個C#迭代器局部變量,一個就是C#迭代器。

  1. L_002d: ldloc.0   
  2. L_002e: callvirt instance class [mscorlib]System.Collections.IEnumerator [mscorlib]
  3. System.Collections.ArrayList::GetEnumerator()  
  4. L_0033: stloc.2  

這三行代碼告訴我們,調用list的GetEnumerator()方法,獲取C#迭代器實例將其賦值給編譯器為我們添加的那個C#迭代器局部變量,接著是L_0034: br.s L_0048,br.s這個指令是強制跳轉,我們接著看

  1. L_0048: ldloc.2   
  2. L_0049: callvirt instance bool [mscorlib]System.Collections.IEnumerator::MoveNext() 

【編輯推薦】

  1. C# lock關鍵字敘述
  2. C#.Net FrameWork簡介
  3. C# new和override簡單描述
  4. C#值類型和引用類型淺談
  5. C#標識符簡單分析
責任編輯:佚名 來源: IT168
相關推薦

2009-08-27 10:08:36

C#隱含類型局部變量

2009-08-26 15:39:08

C#隱式類型局部變量

2009-09-17 13:05:38

Linq局部變量類型

2009-08-26 16:26:37

C#迭代器模式

2009-08-19 15:18:53

迭代器

2009-08-11 13:59:41

迭代器模式C# Iterator

2009-12-15 10:48:54

Ruby局部變量

2020-11-11 21:26:48

函數變量

2018-05-14 09:15:24

Python變量函數

2009-10-12 14:13:00

VB.NET使用局部變

2009-09-11 10:07:05

Linq隱式類型化局部

2015-01-07 14:41:32

Android全局變量局部變量

2010-03-15 09:32:56

Python函數

2024-05-29 08:49:22

Python全局變量局部變量

2021-09-28 07:12:09

函數內存

2017-02-08 12:28:37

Android變量總結

2009-09-22 17:21:24

線程局部變量

2023-09-24 23:40:54

Python變量

2009-08-18 17:17:05

C#局部類型

2012-07-11 23:10:49

SQL Server數據庫
點贊
收藏

51CTO技術棧公眾號

亚瑟一区二区三区四区| 国内精品久久久久影院薰衣草 | 玖玖精品在线| 日韩精品一区二区三区外面| 黄色春季福利在线看| 麻豆久久久久| 国产二区在线播放| 91在线看国产| 麻豆亚洲一区| 国产亚洲一卡2卡3卡4卡新区| 亚洲国产天堂久久综合网| 一本到av在线| 国产精品素人视频| www.成年人视频| 日韩精品成人一区二区三区| 国产综合色香蕉精品| 国产精品99精品一区二区三区∴| 欧美日韩高清在线| 天海翼一区二区三区四区在线观看| 国产成人精品免费| 亚洲成人自拍视频| 在线成人欧美| 国产精品高潮呻吟久久av无限| 欧美日韩在线精品一区二区三区激情综合 | 福利精品视频| 果冻天美麻豆一区二区国产| 日韩av有码在线| 欧美一区二区三区少妇| 中文字幕成人在线观看| 国产九色porny| 日本亚洲三级在线| 久久久久欧美| 亚洲二区视频| 高清国产在线一区| 欧美一区不卡| 91精品中文在线| 久久国产综合| 成人淫片在线看| 欧美xxav| 91九色视频导航| 欧美一区综合| 国产在线精品一区| 亚洲人成免费| 免费亚洲一区二区| 石原莉奈在线亚洲三区| 欧美日韩亚洲一区二区三区在线观看| 亚洲香蕉网站| 欧美久久久久久久| 日本亚洲天堂网| 手机看片日韩国产| 国产成人免费在线视频| 丁香六月激情婷婷| 久久人人97超碰com| 日韩不卡一二三| 国产精品久久久久久久浪潮网站| 亚洲欧洲日本精品| 亚洲免费在线看| 色资源在线观看| 在线播放欧美女士性生活| 性国产高清在线观看| 日韩精品欧美激情| 成人黄色在线| 午夜精品久久久久久久白皮肤| 亚洲成在人线免费观看| 国产精品入口免费视频一| 亚洲国产精品91| 欧美一区二区三区四区夜夜大片 | 欧美诱惑福利视频| 国产精品欧美日韩一区| 久久久影院官网| 亚洲图色一区二区三区| 在线免费中文字幕| 91碰在线视频| 蜜桃在线一区二区三区| 骚视频在线观看| 午夜激情久久| 免费日韩电影在线观看| 亚洲五码在线观看视频| 国产亚洲欧美色| 久久久久久国产精品美女| 国产精品午夜av| 亚洲字幕一区二区| 久久这里只有| 成人在线播放网址| 中文字幕在线不卡一区二区三区| 天堂成人在线| 日韩av一卡二卡| 天天做夜夜做人人爱精品| 国产精品一区二区三区精品| 精品亚洲porn| 男女午夜刺激视频| 欧美日本一区二区在线观看| 婷婷午夜社区一区| 国产精品女主播视频| 久久字幕精品一区| 国产精品亚洲a| 一本色道a无线码一区v| 黄色亚洲网站| 国产免费一区二区三区香蕉精| 日本最新不卡在线| 国产精品666| 日韩精品在线私人| 国产精品二区不卡| 欧美日韩性生活片| 欧美欧美欧美欧美首页| 99精品国产高清一区二区麻豆| 激情五月综合色婷婷一区二区| 91啪亚洲精品| 在线观看的网站你懂的| 91黑丝高跟在线| 久久9热精品视频| 麻豆传媒在线播放| 色婷婷成人综合| 亚洲激情二区| 超清福利视频| 精品亚洲精品福利线在观看| 欧美精品第一区| 国产无限制自拍| 欧美美女一区二区在线观看| 亚洲精品黑牛一区二区三区| 日韩色妇久久av| 色婷婷综合久久久中文字幕| 91综合久久爱com| 免费网站在线观看视频| 欧美人妖巨大在线| 精品久久久久久久| 日韩av资源在线| 亚洲精品自拍偷拍| 午夜在线观看免费一区| 永久www成人看片| 欧美日韩成人免费| 欧美性视频在线| 91精品国产入口| 色综合电影网| 午夜精品久久久久影视| 欧美专区一区| 日本一区二区精品视频| 婷婷视频在线播放| 亚洲欧美日韩国产中文| 五月香视频在线观看| 97国产成人精品视频| www.激情成人| 888av在线视频| 国产精品国产一区二区| 亚洲伊人伊色伊影伊综合网| 国产一区二区三区| 欧美激情 国产精品| 国产亚洲精品美女| 黑人巨大精品欧美黑白配亚洲 | 亚洲欧美日本日韩| 日本私人网站在线观看| 日韩美女激情视频| 亚洲欧洲中文日韩久久av乱码| 精品中文在线| 国产h视频在线播放| 在线观看免费高清视频97| 蜜臀久久99精品久久久久宅男| 欧美13一16娇小xxxx| 91亚洲精品在线| 色综合网色综合| 欧美精品一卡| 国产精品一区二区三区四区色| 亚洲一区中文字幕| 色屁屁一区二区| 伊人影院久久| 国产在线观看av| 亚洲高清视频在线观看| 日韩欧美国产一区二区在线播放| 尤物在线精品| av电影免费在线看| 成人一区二区av| 久久久国产精品免费| 国产欧美一区二区精品性色 | 最新国产成人av网站网址麻豆| 精品午夜一区二区三区在线观看 | 久久美女艺术照精彩视频福利播放| 成人av三级| 黄页网站大全在线观看| www日韩中文字幕在线看| www.成人在线| av男人一区| 成年人黄色电影| 成人性生交大片免费观看嘿嘿视频| 日韩欧美国产激情| 亚洲影院一区| 蜜桃视频m3u8在线观看| 成人在线观看毛片| 欧美成人精品激情在线观看| 欧美高清在线精品一区| 国产探花一区| 天堂地址在线www| 在线视频不卡一区二区| 在线激情影院一区| 国产精品网站一区| 欧美xxxxx视频| 中文国产字幕在线观看| 青青视频免费在线| 欧美精品成人在线| 福利微拍一区二区| 日本成人超碰在线观看|