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();
        }

        
    }
  • 相关阅读:
    nginx利用image_filter动态生成缩略图
    uva 624 CD 01背包打印路径
    【剑指Offer学习】【全部面试题汇总】
    POJ2096-Collecting Bugs(概率DP)
    配置struts tags 输出HTML
    合并基因表达水平(merge gene expression levels, FPKM)
    设置MySQL自动增长从某个指定的数开始
    列联表(Crosstabs)
    mysql 实现行号的方法——如何获取当前记录所在行号
    shell 标出输入、标准输出、错误输出
  • 原文地址:https://www.cnblogs.com/ant520/p/947118.html
Copyright © 2011-2022 走看看