zoukankan      html  css  js  c++  java
  • IEnumerable 和 IEnumerator 接口的作用

    实现IEnumerable接口的类,可以支持foreach循环遍历对象的集合元素

    IEnumerable:
    IEnumerator GetEnumerator() 返回可循环访问集合的枚举数。

    IEnumerator:
    object Current 获取集合中的当前元素。
    bool MoveNext() 将枚举数推进到集合的下一个元素。
    如果枚举数成功地推进到下一个元素,则为 true;如果枚举数越过集合的结尾,则为 false
    void Reset() 将枚举数设置为其初始位置,该位置位于集合中第一个元素之前。


    sample:
    using System;
    using System.Collections;

    namespace ConsoleApplication1
    {
        
    /// <summary>
        
    /// Summary description for Class1.
        
    /// </summary>

        class Class1
        
    {
            
    /// <summary>
            
    /// The main entry point for the application.
            
    /// </summary>

            [STAThread]
            
    static void Main(string[] args)
            
    {
                CStringEnum se 
    = new CStringEnum();

                
    foreach (string s in se)
                
    {
                    Console.WriteLine(s);
                }


                Console.Read() ;
            }

        }


        
    class CStringEnum : IEnumerable, IEnumerator
        
    {
            
    string[] items = new string[16];
            
    int index = -1;

            
    public CStringEnum()
            
    {
                
    for(int i=0; i<items.Length; ++i)
                    items[i] 
    = "s" + i.ToString();
            }


            
    #region IEnumerable Members

            
    public IEnumerator GetEnumerator()
            
    {
                
    // TODO:  Add StringCollection.GetEnumerator implementation
                return (IEnumerator)this;
            }


            
    #endregion


            
    #region IEnumerator Members

            
    public void Reset()
            
    {
                
    // TODO:  Add CStringEnum.Reset implementation
                index = -1;
            }


            
    public object Current
            
    {
                
    get
                
    {
                    
    // TODO:  Add CStringEnum.Current getter implementation
                    return items[index];
                }

            }


            
    public bool MoveNext()
            
    {
                
    // TODO:  Add CStringEnum.MoveNext implementation
                index++;
                
    return index >= items.Length ? false : true;
            }


            
    #endregion

        }


    }

    转自:http://www.cnblogs.com/netflu/archive/2006/07/31/463974.html

    收藏起来,便于温习

  • 相关阅读:
    MySQL concat函数的使用
    不懂技术的人请不要对懂技术的人说这很容易
    css常用样式属性详细介绍
    堆,栈,方法区,常量池,的概念
    Springboot整合 mybatis-generator
    探秘Java中的String、StringBuilder以及StringBuffer
    微信一键登录(微信OAuth2.0)
    ActiveMQ的作用总结(应用场景及优势)以及springboot+activeMq 实战
    SpringBoot几种定时任务的实现方式 和多线程执行任务
    如何使用RedisTemplate访问Redis数据结构
  • 原文地址:https://www.cnblogs.com/xiaopin/p/1930535.html
Copyright © 2011-2022 走看看