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

  • 相关阅读:
    synchronized底层实现学习
    [Alink漫谈之三] AllReduce通信模型
    Alink漫谈(二) : 从源码看机器学习平台Alink设计和架构
    Alink漫谈(一) : 从KMeans算法实现不同看Alink设计思想
    [源码分析]从"UDF不应有状态" 切入来剖析Flink SQL代码生成 (修订版)
    从"UDF不应有状态" 切入来剖析Flink SQL代码生成
    [源码分析] 带你梳理 Flink SQL / Table API内部执行流程
    [白话解析] 通俗解析集成学习之bagging,boosting & 随机森林
    [源码分析] 从FlatMap用法到Flink的内部实现
    Ceph 14.2.5-K8S 使用Ceph存储实战 -- <6>
  • 原文地址:https://www.cnblogs.com/engine1984/p/1729792.html
Copyright © 2011-2022 走看看