当前位置:编程学习 > C#/ASP.NET >>

IEnumerable和IEnumrator用法

先用一个修改过的代码来演示用法,只来干的,不来稀的。
[csharp 
/* 
 * Created by SharpDevelop. 
 * User: Owner 
 * Date: 2012-12-14 
 * Time: 13:43 
 *  
 * To change this template use Tools | Options | Coding | Edit Standard Headers. 
 */  
using System;  
using System.Collections;  
  
/// <summary>  
/// IEnumerable和IEnumrator组合起来使用实现foreach。  
/// </summary>  
namespace TestIEnumeratorAndIEnumratable  
{  
    /// <summary>  
    /// 个体类:这个类保存了单个体的信息和一个方法  
    /// </summary>  
    public class 个体  
    {  
        public string 信息1;  
        public string 信息2;  
          
        public 个体(string 信息1, string 信息2)  
        {  
            this.信息1 = 信息1;  
            this.信息2 = 信息2;  
        }  
          
        public void 报数()  
        {  
            Console.WriteLine(this.信息1 + " = " + this.信息2);  
        }  
    }  
      
    /// <summary>  
    /// 集体类:继承自IEnumerable接口,并提供foreach的可能。  
    /// </summary>  
    public class 集体 : IEnumerable  
    {  
        /// <summary>  
        /// 集体就是一票个体  
        /// </summary>  
        private 个体[] 一票个体;  
          
        /// <summary>  
        /// 这个集体为了简便,是有初始的一群个体凑一块组成的。  
        /// </summary>  
        /// <param name="pArray"></param>  
        public 集体(个体[] pArray)  
        {  
            一票个体 = new 个体[pArray.Length];  
            for (int i = 0; i < pArray.Length; i++)  
                一票个体[i] = pArray[i];  
        }  
          
        /// <summary>  
        /// 接口IEnumerable的实现函数,获取foreach用到的迭代器  
        /// </summary>  
        /// <returns></returns>  
        public IEnumerator GetEnumerator()  
        {  
            return new 个体指针(一票个体);  
        }  
    }  
      
    /// <summary>  
    /// 个体指针:针对个体类的迭代器,继承自IEnumerator。  
    /// 提供了迭代器的走向函数支持。  
    /// </summary>  
    public class 个体指针 : IEnumerator  
    {  
        /// <summary>  
        /// 一票个体的指针  
        /// </summary>  
        public 个体[] 一票个体的指针;  
          
        /// <summary>  
        /// 迭代器当前位置的指示标志  
        /// </summary>  
        int 位置 = -1;  
          
        /// <summary>  
        /// 个体指针的赋值:指向一堆无管理的个体  
        /// </summary>  
        /// <param name="list"></param>  
        public 个体指针(个体[] list)  
        {  
            一票个体的指针 = list;  
        }  
          
        /// <summary>  
        /// 接口IEnumerator的实现函数,迭代器下移。foreach用到,我们不调用。  
        /// </summary>  
        /// <returns></returns>  
        public bool MoveNext()  
        {  
            位置++;  
            return (位置 < 一票个体的指针.Length);  
        }  
          
        /// <summary>  
        /// 接口IEnumerator的实现函数,迭代器复位。foreach用到,我们不调用。  
        /// </summary>  
        public void Reset()  
        {  
            位置 = -1;  
        }  
          
        /// <summary>  
        /// 接口IEnumerator的实现函数,获取当前值。foreach用到,我们不调用。  
        /// </summary>  
        public object Current  
        {  
            get  
            {  
                try  
                {  
                    return 一票个体的指针[位置];  
                }  
                catch(IndexOutOfRangeException)  
                {  
    &n
补充:软件开发 , C# ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,