zoukankan      html  css  js  c++  java
  • C#3.0学习笔记(11)枚举数和foreach语句实现原理

    1, 可枚举类型和枚举数?

           可枚举类型:实现了GetEnumerator方法的类型,并且它返回用于项的枚举数。

           枚举数:枚举数是可以依次返回集合中项的类对象。一般是可枚举类型对象调用GetEnumerator方法来获取枚举数对象。

           下图解释了可枚举类型和枚举数之间的关系:

          

    2, foreach语句实现原理?

           foreach语句是被设计用来和可枚举类型一起使用。只要它的遍历对象是可枚举类型。

           比如数组,它就会执行以下动作来实现遍历输出。

      1>    通过调用GetEnumerator方法获取对象的枚举数。

      2>    从枚举数中请求每一项并且把它作为迭代变量,代码可以读但不可以改。

      例如:

    //方法一:使用IEnumerator接口的MoveNext方法和Current属性来模仿foreach循环遍历数组效果。

      class Program

    {

    static voidMain(string[] args)

    {

    int[] arr = { 1,2,3,4,5}; //声明并初始化数组。

    IEnumerator ie = arr.GetEnumerator(); //调用可枚举类型的GetEnumerator方法获得枚举数对象。

    while (ie.MoveNext()) //调用IEnumerator接口的MoveNext方法移到下一项。实现遍历数组。

    {

    int i = (int)ie.Current; //调用IEnumerator接口的Current方法获取当前项。注意它返回的是object类型,需要强制转换类型。

    Console.WriteLine("{0}",i);

    }

    Console.ReadKey();

    }

    }

      程序输出结果为:

      

         //方法二:使用foreach来遍历数组:

      class Program

    {

    static voidMain(string[] args)

    {

    int[] arr = { 1, 2, 3, 4, 5 }; //声明并初始化数组。

    foreach (int item in arr) //使用foreach语句遍历数组。

    {

    Console.WriteLine("{0}",item);

    }

    Console.ReadKey();

    }

    }

       程序输出结果与上面一样。

  • 相关阅读:
    牛客网 2018年东北农业大学春季校赛 L题 wyh的天鹅
    牛客网 2018年东北农业大学春季校赛 I题 wyh的物品
    记cccc天梯赛第三届决赛
    noi.openjudge 1.13.15
    Java连接Oracle数据库的三种连接方式
    SSH框架总结(框架分析+环境搭建+实例源码下载)
    深入浅出MyBatis:JDBC和MyBatis介绍
    每个 Java 开发者都应该知道的 5 个注解
    高效Web开发的10个jQuery代码片段
    编写优秀jQuery插件的10个技巧
  • 原文地址:https://www.cnblogs.com/mcgrady/p/2246867.html
Copyright © 2011-2022 走看看