前篇讲述了如何实现自建类中的foreach功能,现在来讲讲如何实现范型类的foreach功能。其是在"体验C#范型,创建指定元素类型的ArrayList(0) "中已经涉及到了这个问题,只是当时没有展开,这次就详细的讲一下。
         前面讲到,要类实现foreach功能,需要从IEnumeratalbe接口继承,在范型的类中,同样需要从接口继承,只是所继承的接口是IEnumerator<>,只是.net framework 2.0中提供范型功能的System.Collections.Generic命名空间中的一个,Generic就是范型的意思。比如现在有一个范型的类MyList,其中维护了一个数组,数组就是给予范型的数组,其类型在对象创建时确定,我们来看看如何实现foerach功能:

 public class Mylist<T>:IEnumerable<T>
    
{
        
private T[] list;
        
public Mylist(T[] ts)
        
{
            
this.list = ts;
        }


        
IEnumerable Members

        
IEnumerable Members
    }

和明显,其中的public IEnumerator<T> GetEnumerator()和IEnumerator IEnumerable.GetEnumerator()这两个方法就是需要从IEnumeratable<>继承后重写的方法,也是实现的foreach的方法。在public IEnumerator<T> GetEnumerator()中写一个循环一次返回数组中的元素,在 另一个方法中在调用此方法。怎么样,是不是跟非范型实现foreach的过程有些不同呢。

 

posted on 2005-12-13 17:35  死于青春  阅读(391)  评论(0编辑  收藏  举报