zoukankan      html  css  js  c++  java
  • 对象枚举遍历实现二

    代码
         //可枚举对象并非必须实现IEnumerable接口。该职责可以委托给第三个类来实现。
         public class Persons
        {  
             
    string[] m_Names;
             
    public Persons(params string[] Names)
             {
                    m_Names 
    = new string[Names.Length];
                    Names.CopyTo(m_Names, 
    0);
             }
             
    private string this[int index]
             {
                 
    get { return m_Names[index]; }
                 
    set { m_Names[index] = value; }

             }
               
             
    private class PersonsEnumerator : IEnumerator
             {

               
                
    int index = -1;
                
                Persons p;
                
    public PersonsEnumerator(Persons p)
                {
                    
    this.p = p;
                }
                
    public bool MoveNext()
                {
                    index
    ++;
                    
    return index < p.m_Names.Length;
                }
                
    public void Reset()
                {
                    index 
    = -1;
                }
                
    public object Current
                {
                    
    get
                    {
                        
    return p.m_Names[index];
                    }
                }
             }
             
    private class PersonsEnumerable : IEnumerable
             {
                 
    private Persons m_persons;
                 
    internal PersonsEnumerable(Persons persons)
                 {
                     m_persons 
    = persons;
                 }
                 IEnumerator IEnumerable.GetEnumerator()
                 {
                     
    return new PersonsEnumerator(m_persons);
                 }


             }
             
    public IEnumerable InOrder
             {
                 
    get {   return new PersonsEnumerable(this); }
             }
             
    public IEnumerable Reverse
             {
                 
    get 
                 {
                     
    int length=this.m_Names.Length;
                     Persons persons
    = new Persons();
                     persons.m_Names 
    = new string[length];
                     
    for (int i = 0; i < length; i++)
                     {
                        
                         persons.m_Names[i] 
    = m_Names[length-i-1]; 
                     }
                     
    return new PersonsEnumerable(persons);

                 }
             }
            
        }
           实现代码:
           
    public  static void EnumObject()
            {
                Persons p 
    = new Persons("001","002","003");
                
    //正向输出
                foreach (string s in p.InOrder)
                {
                    Console.WriteLine(s);
                }
                
    //反序输出
                foreach (string s in p.Reverse)
                {
                    Console.WriteLine(s);
                }

            }
  • 相关阅读:
    数据安全-数据加密学
    网络文件共享服务-SAMBA服务搭建和配置
    vsftp
    网络文件共享服务-NFS服务配置和测试
    负载均衡,主备模式
    系统中查找文件
    如何管理Linux系统的进程与计划任务
    Robot Framework 发送接口示例
    unittest官网文档
    macOS搭建Selenium Server(Selenium Grid)
  • 原文地址:https://www.cnblogs.com/hubcarl/p/1706370.html
Copyright © 2011-2022 走看看