精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

2021年了,`IEnumerator`、`IEnumerable`接口還傻傻分不清楚?

網絡 通信技術
IEnumerator、IEnumerable這兩個接口單詞相近、含義相關,傻傻分不清楚。入行多年,一直沒有系統性梳理這對李逵李鬼。

[[375509]]

本文轉載自微信公眾號「全棧碼農畫像」,作者小碼甲  。轉載本文請聯系全棧碼農畫像公眾號。

 IEnumerator、IEnumerable這兩個接口單詞相近、含義相關,傻傻分不清楚。

入行多年,一直沒有系統性梳理這對李逵李鬼。

最近本人在懟著why神的《其實吧,LRU也就那么回事》,方案1使用數組實現LRU,手寫算法涉及這一對接口,借此時機覆蓋這一對難纏的冤家。

IEnumerator

IEnumerator、IEnumerable接口有相似的名稱,這兩個接口通常也在一起使用,它們有不同的用途。

IEnumerator接口為類內部的集合提供了迭代方式, IEnumerator 要求你實現三個方法:

  1. MoveNext方法:該方法將集合索引加1,并返回一個bool值,指示是否已到達集合的末尾。
  2. Reset方法:它將集合索引重置為其初始值-1,這會使枚舉數無效。
  3. Current方法: 返回position位置的當前對象

IEnumerable

IEnumerable接口為foreach迭代提供了支持,IEnumerable要求你實現GetEnumerator方法。

  1. public IEnumerator GetEnumerator() 
  2.     return (IEnumerator)this; 

該用哪一個接口?

僅憑以上辭藻,很難區分兩個接口的使用場景。

IEnumerator接口定義對類中的集合類型對象的迭代方式,

IEnumerable接口允許使用foreach循環進行枚舉。

因此IEnumerable接口的GetEnumerator方法會返回一個IEnumerator接口。要實現IEnumerable,你還必須實現IEnumerator。

從英文詞根上講:

IEnumerator接口代表了枚舉器,里面定義了枚舉方式,是名詞。

IEnumerable接口代表該對象具備了可被枚舉的性質,是形容詞。

總之,如果您想提供對foreach的支持,那么就先讓對象可枚舉,再談論枚舉方式,也就是說實現這兩個接口。

最佳實踐

  • 在嵌套類中實現IEnumerator,這樣你可以創建多個枚舉器。
  • 為IEnumerator的Current方法提供異常處理。

為什么要這么做?

如果集合的內容發生變化,則reset方法將被調用,緊接著當前枚舉數無效,您將收到一個IndexOutOfRangeException異常(其他情況也可能導致此異常)。所以執行一個Try…Catch塊來捕獲這個異常并引發InvalidOperationException異常, 提示在迭代時不允許修改集合內容。

“這也正是我們常見的在foreach 里面嘗試修改迭代對象會報InvalidOperationException異常的原因。

下面以汽車列表為例實現IEnumerator IEnumerable接口

  1. using System; 
  2. using System.Collections; 
  3. namespace ConsoleEnum 
  4.     public class cars : IEnumerable 
  5.     { 
  6.         private car[] carlist; 
  7.    
  8.         //Create internal array in constructor. 
  9.         public cars() 
  10.         { 
  11.             carlist= new car[6] 
  12.             { 
  13.                 new car("Ford",1992), 
  14.                 new car("Fiat",1988), 
  15.                 new car("Buick",1932), 
  16.                 new car("Ford",1932), 
  17.                 new car("Dodge",1999), 
  18.                 new car("Honda",1977) 
  19.             }; 
  20.         } 
  21.         //private enumerator class 
  22.         private class  MyEnumerator:IEnumerator 
  23.         { 
  24.             public car[] carlist; 
  25.             int position = -1; 
  26.  
  27.             //constructor 
  28.             public MyEnumerator(car[] list) 
  29.             { 
  30.                 carlist=list; 
  31.             } 
  32.             private IEnumerator getEnumerator() 
  33.             { 
  34.                 return (IEnumerator)this; 
  35.             } 
  36.             //IEnumerator 
  37.             public bool MoveNext() 
  38.             { 
  39.                 position++; 
  40.                 return (position < carlist.Length); 
  41.             } 
  42.             //IEnumerator 
  43.             public void Reset() 
  44.             { 
  45.                 position = -1; 
  46.             } 
  47.             //IEnumerator 
  48.             public object Current 
  49.             { 
  50.                 get 
  51.                 { 
  52.                     try 
  53.                     { 
  54.                         return carlist[position]; 
  55.                     } 
  56.                     catch (IndexOutOfRangeException) 
  57.                     { 
  58.                         throw new InvalidOperationException(); 
  59.                     } 
  60.                 } 
  61.             } 
  62.         }  //end nested class 
  63.       public IEnumerator GetEnumerator() 
  64.       { 
  65.           return new MyEnumerator(carlist); 
  66.       } 
  67.     } 

在foreach cars的時候,可以明顯看到

  • foreach語法糖初次接觸可枚舉的cars, 實際會訪問cars實現的 GetEnumerator()方法,拿到迭代器
  • foreach每次迭代,實際會訪問迭代器的Current屬性

 

 

責任編輯:武曉燕 來源: 全棧碼農畫像
相關推薦

2021-03-10 08:56:37

Zookeeper

2022-05-15 21:52:04

typeTypeScriptinterface

2021-07-27 07:31:16

JavaArrayList數組

2024-02-29 09:08:56

Encoding算法加密

2020-10-30 08:20:04

SD卡TF卡存儲

2018-12-17 12:30:05

Kubernetes存儲存儲卷

2018-05-22 16:24:20

HashMapJavaJDK

2020-03-03 17:35:09

Full GCMinor

2025-08-18 03:25:00

2023-02-27 15:46:19

數據元元數據

2023-09-03 21:18:07

Python編程語言

2025-08-14 08:21:17

PODAODTO

2021-02-08 23:47:51

文件存儲塊存儲對象存儲

2025-05-12 08:40:00

前端監控DOM

2016-11-04 12:51:46

Unix網絡IO 模型

2021-11-09 06:01:35

前端JITAOT

2022-02-25 09:14:33

類變量共享實例變量

2024-11-04 00:00:03

viewportDOMSPA

2025-08-26 04:00:00

2020-11-11 07:32:18

MySQL InnoDB 存儲
點贊
收藏

51CTO技術棧公眾號

亚洲妇女成熟| www.精品久久| 久久资源中文字幕| 欧美一区二区三区在线电影| 日本老太婆做爰视频| 国产高潮流白浆喷水视频| 欧美日韩影院| 亚洲欧美精品在线| 看看黄色一级片| wwww亚洲| 国产精品久线在线观看| 999久久久| 无码一区二区三区在线观看| 久久大综合网| 国产午夜精品久久久| 视色视频在线观看| 国产一级一片免费播放放a| 国产精品白丝av嫩草影院| 在线视频国内自拍亚洲视频| 在线观看av的网址| 精品电影在线| 国产91在线观看| 国产精品免费久久久久影院| 69av.com| 欧美电影《轻佻寡妇》| 亚洲加勒比久久88色综合| 亚洲视频一二三四| 亚洲十八**毛片| 夜夜爽夜夜爽精品视频| 亚洲二区自拍| 免费a级毛片在线观看| 国产成人精品一区二区三区四区| 国产成人精品视| 久久精品性爱视频| 自拍视频亚洲| 中文字幕欧美国内| 中文字幕av网址| 国产成人aa在线观看网站站| 欧美久久久一区| 日本成人在线免费视频| sm在线播放| 艳妇臀荡乳欲伦亚洲一区| 亚洲v国产v在线观看| 欧美一区二区少妇| 成人avav影音| 不卡一卡2卡3卡4卡精品在| 怡红院成永久免费人全部视频| 国产欧美一级| 欧美精品激情在线观看| 成人免费视频网站入口::| 成人精品影视| 一区二区欧美久久| 一道本在线观看| 亚洲人成精品久久久 | 欧美激情18p| h色网站在线观看| 国产精品久久久久久影院8一贰佰 国产精品久久久久久麻豆一区软件 | 国产日韩欧美一区二区三区四区| 亚洲精品综合久久| 国产传媒一区在线| 3d动漫啪啪精品一区二区免费 | 精品视频—区二区三区免费| 熟妇高潮一区二区| 在线日韩成人| 精品国一区二区三区| 久久黄色一级视频| gogo人体一区| 日韩成人久久久| 亚洲蜜桃精久久久久久久久久久久| 精品国产影院| 日韩av在线一区| 欧美老熟妇乱大交xxxxx| 亚洲精品3区| 怡红院精品视频| 亚洲欧美卡通动漫| 欧美粗暴jizz性欧美20| 欧美日韩999| 日本午夜精品理论片a级app发布| 一区二区三区国产盗摄| 日韩美女毛茸茸| 中文字幕欧美人妻精品| 精东粉嫩av免费一区二区三区| 亚洲xxx自由成熟| 丝袜视频国产在线播放| 久久久久国内| 国产精品影片在线观看 | 91麻豆精品国产自产在线观看一区 | 成人私拍视频| 欧美日韩亚洲丝袜制服| 国产精欧美一区二区三区白种人| 91成人福利| 亚洲毛片在线看| 99成人在线观看| 怡红院精品视频在线观看极品| 欧美中在线观看| 97精品人妻一区二区三区在线| 国产成人午夜99999| 超碰97人人人人人蜜桃| 精品美女视频在线观看免费软件| 日韩一区在线免费观看| 97超碰在线人人| 国产精品亚洲d| 精品精品国产高清a毛片牛牛| 真人bbbbbbbbb毛片| 色综合蜜月久久综合网| 在线电影av不卡网址| 国产一区二区视频在线观看免费| 一区在线视频| 国产精品久久久久999| 99久久久国产精品无码网爆| 久久久国产精品午夜一区ai换脸| 亚洲一区二区三区精品在线观看| 91cn在线观看| 狠狠操狠狠色综合网| 男女视频在线看| 99久久香蕉| 中文字幕久久久av一区| 久久久久久久久久影院| 久久se这里有精品| 国产亚洲欧美一区二区| 91女主播在线观看| 性感美女久久精品| 国产九九在线观看| 国产精品毛片视频| 久久亚洲一区二区三区四区五区高| 国产污视频在线观看| 日本欧美一区二区在线观看| 国产精品对白刺激久久久| 第一页在线观看| 亚洲成人av一区二区三区| 久久综合伊人77777麻豆最新章节| 久久久91麻豆精品国产一区| 最近更新的2019中文字幕| 久久精品一级片| 免费观看日韩av| 久久99久久99精品蜜柚传媒| 91吃瓜网在线观看| 精品日韩美女的视频高清| 91性高潮久久久久久久| 欧美日韩一二| 日本三级韩国三级久久| 精品国产乱码一区二区三 | 欧美在线视频一区二区| 国产偷拍一区二区| 中文字幕久久午夜不卡| 国产91在线视频观看| 日韩在线影视| 久久久久久久色| 国产一区二区三区在线观看| 久久精品欧美日韩精品| 青青青青草视频| 中文字幕区一区二区三| 自拍视频国产精品| 中文字幕在线网址| 国产日韩欧美精品在线| 国产91在线视频观看| 丝袜久久网站| 性欧美xxxx视频在线观看| 国产丰满美女做爰| 中文字幕二三区不卡| 中文字幕永久视频| 精品产国自在拍| 日韩av片电影专区| 理论视频在线| 在线看国产一区| 免费看污片网站| 免播放器亚洲| 欧美在线一区二区三区四区| 春暖花开亚洲一区二区三区| 亚洲欧美在线免费观看| 国产免费一区二区三区四区五区| 久久久久久亚洲综合| 久久久久久免费看| 国产99精品| 国产精品久久97| 九七久久人人| 日韩免费性生活视频播放| 欧美精品videos极品| 成人免费电影视频| 白嫩少妇丰满一区二区| 国产在线日韩精品| 国产精品一区二区在线| 国产在线二区| 精品盗摄一区二区三区| 久久精品人妻一区二区三区| jlzzjlzz亚洲日本少妇| 男女爽爽爽视频| 911精品美国片911久久久| 51国偷自产一区二区三区 | 国产最新精品| 91在线免费视频| 91av久久| 亚洲午夜久久久久久久| 中文字幕丰满人伦在线| 日韩美女视频19| 亚洲av综合色区无码另类小说| 亚洲一区黄色| 亚洲精品免费在线看| 国产一区一区| 欧美在线视频导航| 蜜桃视频网站在线观看| 精品国产1区二区| 一级特黄色大片| 亚洲国产一区二区视频| 好吊视频在线观看| 国产一区二区精品久久91| xxxx18hd亚洲hd捆绑| 精品国产一区探花在线观看| 国产一区二区香蕉| 欧美人动性xxxxz0oz| 国产午夜精品一区二区三区| 国产日韩在线观看一区| 欧美日韩国产在线看| 久久精品在线观看视频| 久久一二三国产| 黄色a级三级三级三级| 国产农村妇女精品一二区| 欧美日韩一级在线| 亚洲人亚洲人色久| 91在线播放视频| 久久亚洲精品人成综合网| 97精品免费视频| 韩国av网站在线| 亚洲图片欧美午夜| 成人午夜视频一区二区播放| 色综合天天视频在线观看| 国产成人无码aa精品一区| 国产丝袜欧美中文另类| 亚洲精品鲁一鲁一区二区三区 | 国产精品天天操| 欧美中文一区二区三区| 久久精品欧美一区二区| 专区另类欧美日韩| 国产三级在线观看完整版| aaa国产一区| 国产乱淫av麻豆国产免费| 国产剧情在线观看一区二区| 日本人视频jizz页码69| 久久xxxx| 欧美日韩性生活片| 欧美日韩亚洲一区二区三区在线| 亚洲高清精品中出| 图片婷婷一区| 狠狠色综合色区| 99精品国产高清一区二区麻豆| 91夜夜揉人人捏人人添红杏| 日韩不卡免费高清视频| 国产精品h在线观看| 一个人看的www视频在线免费观看| 欧美日韩xxxxx| 污污的视频在线观看| 在线电影中文日韩| wwwww在线观看免费视频| 亚洲视频欧美视频| 四虎在线观看| 日韩国产欧美精品一区二区三区| 99国产精品欲| 日韩精品中文字幕一区二区三区| 国产男男gay体育生网站| 欧美剧情电影在线观看完整版免费励志电影 | 国内精品视频在线观看 | 无码国精品一区二区免费蜜桃| 欧美一区二区三区免费在线看| 国产又爽又黄又嫩又猛又粗| 91精品91久久久中77777| 国产99免费视频| 欧洲国产伦久久久久久久| 波多野结衣影片| 欧美三级资源在线| 一区两区小视频| 欧美一区二区三区四区五区| 精品国产va久久久久久久| 日韩欧美成人午夜| 性色av蜜臀av| 亚洲国产日韩精品在线| 欧美性孕妇孕交| 一区二区在线视频| 青青青青在线| 欧美福利视频在线观看| 77thz桃花论族在线观看| 91极品女神在线| av免费在线一区| 亚洲精品日韩激情在线电影| 日韩精品中文字幕吗一区二区| 国产精品一区二区三区四区五区 | 小早川怜子一区二区的演员表| 成人欧美一区二区三区| 少妇久久久久久被弄高潮| 香蕉乱码成人久久天堂爱免费| 91丝袜一区二区三区| 欧美精品色综合| 丰满熟女一区二区三区| 亚洲欧美综合v| av免费看在线| 欧美中文在线免费| 亚洲视频一起| 欧美日韩综合另类| 永久亚洲成a人片777777| 黄色国产一级视频| 精品中文av资源站在线观看| www.四虎在线| 国产亚洲精品bt天堂精选| 日韩在线中文字幕视频| 亚洲成a人片在线观看中文| 亚洲精品国产欧美在线观看| 日韩一区二区电影在线| 欧美女同网站| 九色91av视频| 日韩高清在线| 久久影院理伦片| 亚洲一区二区三区| 日本在线视频www| 国产一区二区日韩精品| 中文字幕在线观看免费高清| 一区二区国产视频| 无码人妻一区二区三区免费| 日韩欧美卡一卡二| 国产剧情在线观看| 欧美黄色性视频| 色综合视频一区二区三区日韩| 精品一区在线播放| 午夜精品久久久久久久四虎美女版| 成年人网站免费视频| 久久99深爱久久99精品| 久久精品成人av| 欧美日韩激情视频| www.天堂在线| 日韩中文字在线| av日韩电影| 欧美日韩大片一区二区三区| 欧美日韩三级电影在线| 天天视频天天爽| 久久九九国产精品| 欧美性生给视频| 欧美人妖巨大在线| 你懂得网站在线| 91精品国产91久久久久久久久| 成人国产精品久久| 中文字幕精品一区日韩| 日本成人超碰在线观看| 欧美成人三级伦在线观看| 一区二区三区中文字幕电影| 国产免费不卡av| 在线日韩中文字幕| 欧美性猛交xxx高清大费中文| 国产精选在线观看91| 久久在线免费| 国产一级片中文字幕| 中文字幕在线不卡| 一区二区视频在线免费观看| 亚洲人精品午夜在线观看| 欧美黄色三级| 日本成人三级| 日日摸夜夜添夜夜添亚洲女人| 精品影片一区二区入口| 红桃av永久久久| 天天操天天干天天爽| 国语对白做受69| 精品国产影院| av视屏在线播放| 国产亚洲欧美在线| 潘金莲一级淫片aaaaaa播放| 国产一区二区三区视频免费| 免费视频成人| 正义之心1992免费观看全集完整版| 久久国产综合精品| 免费成人美女女在线观看| 日韩一区二区三区免费观看| 91极品在线| 国产精品亚洲综合| 六月丁香综合| 亚洲欧美另类日本| 日韩三级高清在线| 久久大胆人体| 精品国产二区在线| 奇米888四色在线精品| 国产精品18在线| 91麻豆精品国产91久久久更新时间| 日韩毛片久久久| 国产精品入口免费| 麻豆91精品| 69夜色精品国产69乱| 欧美白人最猛性xxxxx69交| 97人人爽人人澡人人精品| 久久久久九九九| 日韩不卡手机在线v区| 女人十八毛片嫩草av| 欧美日韩成人在线一区| av在线app| 精品国产乱码久久久久久丨区2区| 国产精品久久久一区二区| 精品人妻一区二区三区四区| 在线不卡中文字幕| 国产在线xxx| 一区二区三区国| 丁香五精品蜜臀久久久久99网站| 久久久久久久久久久久久久av| 国产亚洲精品久久久久久牛牛| 欧美专区视频| 国产性xxxx18免费观看视频|