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

        }


    }
  • 相关阅读:
    Linux sed命令
    Linux之read命令使用
    Linux shell之数组
    Linux Shell脚本攻略:shell中各种括号()、(())、[]、[[]]、{}的作用
    shell中的${},##, %% , :- ,:+, ? 的使用
    hostname命令
    进度条的制作-python
    33 Python 详解命令解析
    Python 学习笔记 多进程 multiprocessing--转载
    Spring注解(生命周期)
  • 原文地址:https://www.cnblogs.com/xgw2004058/p/1756778.html
Copyright © 2011-2022 走看看