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高级程序设计》

  • 相关阅读:
    MySQL 优化实施方案
    MySQL Replication 主从复制全方位解决方案
    CentOS 7.X 系统安装及优化
    W25Q32的使用
    Word分栏
    转载:STM32之中断与事件---中断与事件的区别
    常见贴片电阻的分类、功率、封装、标注规则
    导线时延
    重装系统流程
    MFC应用程序向导生成的文件
  • 原文地址:https://www.cnblogs.com/engine1984/p/1729792.html
Copyright © 2011-2022 走看看