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

    
}
原文地址:https://www.cnblogs.com/ant520/p/947118.html