zoukankan      html  css  js  c++  java
  • IEnumerable和IEnumerator

    我们写一些实体类的时候,总希望它们可以进行foreach遍历,但是默认的是不能进行foreach遍历。

         假如我有一个汽车类和一个汽车工厂类见下面代码:

    public class Car
        {
            
    private string _name;

            
    public string Name
            {
                
    get
                {
                    
    return _name;
                }
                
    set
                {
                    _name 
    = value;
                }
            }

            
    public Car(string name)
            {
                _name 
    = name;
            }
        }

        
    public class CarFactory
        {
            
    private Car[] carArry;

            
    public CarFactory()
            {
                carArry 
    = new Car[2];
                carArry[
    0= new Car("carA");
                carArry[
    1= new Car("carB");
            }
        }

     

          然后在客户端进行使用

    static void Main(string[] args)
            {
                CarFactory carFactory 
    = new CarFactory();

                
    foreach (Car c in carFactory)
                {
                    Console.WriteLine(c.Name);
                }
            }

          现在你会发现编译器通不过,会提示一个这样的错误:

    “错误 1 “ConsoleApplication1.CarFactory”不包含“GetEnumerator”的公共定义,因此 foreach 语句不能作用于“ConsoleApplication1.CarFactory”类型的变量 D:\VS2008\Test\ConsoleApplication1\ConsoleApplication1\Program.cs 14 13 ConsoleApplication1”

          它提示说我们的类中没有实现GetEnumerator方法。

          这时我们只需要把我们的CarFactory类实现IEnumerable接口就可以了,见下面代码:

         

     public class CarFactory:IEnumerable
        {
            
    private Car[] carArry;

            
    public CarFactory()
            {
                carArry 
    = new Car[2];
                carArry[
    0= new Car("carA");
                carArry[
    1= new Car("carB");
            }

            
    #region IEnumerable 成员

            
    public IEnumerator GetEnumerator()
            {
                
    return carArry.GetEnumerator();
            }

            
    #endregion
        }

         参考书:《C#与.Net3.0高级程序设计》

  • 相关阅读:
    Spark之 SparkSql整合hive
    Spark之 使用SparkSql操作Hive的Scala程序实现
    Spark之 RDD转换成DataFrame的Scala实现
    Spark之 SparkSql、DataFrame、DataSet介绍
    Spark之 RDD
    Spark scala和java的api使用
    设计模式之四观察者模式
    设计模式之三静态代理模式
    设计模式之二装饰者模式
    设计思想之二面向接口编程
  • 原文地址:https://www.cnblogs.com/engine1984/p/1729792.html
Copyright © 2011-2022 走看看