国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

IEnumerable是集合,IEnumerator是集合的迭代器

2019-11-14 16:05:04
字體:
來源:轉載
供稿:網友

我們常用IEnumerable,卻忽視IEnumerator。簡單來說,IEnumerable是可以被循環遍歷的集合,IEnumerator實施循環遍歷。

 

接口分別是:

public interface IEnumerator
{
    bool MoveNext();
    object Current{get;}
    void Reset();
}
public interface IEnumerable
{
    IEnumerator GetEnumerator();
}

 

來執行這樣簡單的一個控制臺程序。

 

    class PRogram
    {
        static void Main(string[] args)
        {
            IEnumerable<string> list = new List<string>() {"hello","world"};
            foreach (var item in list)
            {
                Console.WriteLine(item);
            }
            Console.ReadKey();
        }
    }

 

在"解決方案資源管理器"中,右鍵控制臺項目,點擊"在文件資源管理器中打開文件"。

 

依次點擊"bin"和"Debug"文件夾。

 

復制下當前文件目錄。

 

打開開發人員命令提示。

 

由于應用程序文件在F盤,輸入如下:

1

 

導向到剛才復制的目錄,輸入如下:

2

 

查看當前目錄下的清單,輸入如下:

3

 

使用.NET的ILDASM反編譯應用程序文件,并輸入到某個txt文本中。輸入如下:

4

 

打開1.txt文件,輸入如下:

5

 

1.txt文件被打開,相關的IL代碼如下:

6

 

可見,foreach也是語法糖,當使用foreach循環遍歷的時候,實際上是調用IEnumerable的IEnumerator的方法。

 

所以,對于foreach,可以換種寫法:

 

    class Program
    {
        static void Main(string[] args)
        {
            IEnumerable<string> list = new List<string>() { "hello", "world" };
            IEnumerator it = list.GetEnumerator();
            while (it.MoveNext())
            {
                Console.WriteLine(it.Current);
            }
            Console.ReadKey();
        }
    }

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 武威市| 汾阳市| 郁南县| 牟定县| 肃北| 利川市| 常州市| 江北区| 凤阳县| 札达县| 海安县| 阿巴嘎旗| 应城市| 乐陵市| 大洼县| 正安县| 海阳市| 泾川县| 二连浩特市| 彭阳县| 栖霞市| 宁陵县| 通州市| 佳木斯市| 岢岚县| 平山县| 兴和县| 库伦旗| 喀什市| 乌苏市| 德钦县| 吉水县| 新河县| 秭归县| 九龙城区| 屏南县| 屏南县| 兴安盟| 四子王旗| 鹿泉市| 长白|