zoukankan      html  css  js  c++  java
  • 2.0 泛型

    1.1里面HashTable ArrayList里面都是object类型,2.0里面泛型对此做了优化
        Dictionary<>其实就好比HashTable.类型更加安全。Dictionary遍历输出的顺序,就是加入的顺序,这点与Hashtable不同,hashtable好像是后进先出的。
        
        List<> 类是 ArrayList 类的泛型等效类。
    tag:1.1集合 
    2.关于迭代器

     //自定义数据集合必须实现IEnumerable接口的GetEnumerator()同时数据集合中的元素必须实现IEnumerator接口成员
    //1.1数据集合类
    public class Person : IEnumerable
    {
        
    public string[] m_Names;

        
    public Person(params string[] Names)
        

            m_Names 
    = new string[Names.Length];
            Names.CopyTo(m_Names, 
    0);
        }


        
    public string this[int index]
        
    {
            
    get return m_Names[this]; }
            
    set { m_Names[this= value; }
        }


        IEnumerator IEnumerable.GetEnumerator()
        
    {
            
    //返回一个包含对象的迭代器
            return new PersonEnumerator(this);
        }

    }

    //集合元素类
    public class PersonEnumerator : IEnumerator
    {
        
    int index = -1;
        Person p;

        
    public PersonEnumerator(Person p)
        
    this.p = p; }
        
    object IEnumerator.Current
        
    {
            
    get return p.m_Names[index]; }
        }

        
    bool IEnumerator.MoveNext() {  
            
    //向下移动一位
        }


        
    void IEnumerator.Reset() { index = -1; }
    }



    //2.0没有实现集合元素类,编译器自动完成这个
    class Persons<T> : IEnumerable<T>
    {
        
    private T[] m_Names;

        
    public Persons(params T[] Names)
        
    {
            m_Names 
    = new T[Names.Length];
            Names.CopyTo(m_Names, 
    0);
        }

        
    //使用yield实现简单的迭代器 
        public IEnumerator<T> GetEnumerator()
        
    {
            
    for (int i = 0; i < m_Names.Length; i++)
            
    {
                
    //使用yield 依次返回每个元素
                yield return m_Names[i];
                
    //yield break;终止迭代
            }

        }


        IEnumerator IEnumerable.GetEnumerator()
        
    {
            
    return GetEnumerator();
        }

        
    }
  • 相关阅读:
    我的安全测试面试_自问自答,不亦乐乎
    Linux Shell 网络层监控脚本(监控包括:连接数、句柄数及根据监控反馈结果分析)
    netstat监控大量ESTABLISHED连接与Time_Wait连接问题
    详解 Spotlight on MySQL监控MySQL服务器
    详解 Spotlight on Unix 监控Linux服务器
    某听书网站系统漏洞,利用抓包拼接方式获取网站资源
    不懂得使用工具的测试不是好测试
    【好书摘要】性能优化中CPU、内存、磁盘IO、网络性能的依赖
    性能调优从哪里入手
    报文解析,从请求报文详细讲到响应码
  • 原文地址:https://www.cnblogs.com/ant520/p/947118.html
Copyright © 2011-2022 走看看