码迷,mamicode.com
首页 > 编程语言 > 详细

foreach为什么要实现IEnumerable接口而不是直接用IEnumerator接口

时间:2014-12-19 18:44:00      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:

    在.Net中,要想被foreach遍历,那么目标对象要实现IEnumerable或IEnumerable<T>接口,这个接口有一个方法,GetEnumerator(),返回一个IEnumerator接口,这个接口里定义了Next()等方法,例如:

技术分享
public class Garge : IEnumerable
{
      public IEnumerator GetEnumerator
      {
            return new A();
       } 


      internal class A : IEnumerator
      {
            //实现Next()等等方法
       }
}   
View Code

    假如foreach只需要实现IEnumerator接口,那么我们的类就必须自己实现其接口中的方法,那么常用的集合也要这么实现,那么我们的自定义类要想实现可以用foreach遍历,就必须继承那些常用的集合对象,或是在我们实现IEnumerator接口的方法中,调用集合的对应方法。可以看出,如果.net这样设置,会让人非常的头疼。

    而像.net现今这么设计,因为常用的集合对象,通常都实现了IEnumerable接口,我们要在我们自定义的类里实现可以用foreach来遍历,只需要调用集合对象的GetEnumerator()方法即可。

foreach为什么要实现IEnumerable接口而不是直接用IEnumerator接口

标签:

原文地址:http://www.cnblogs.com/bysxiang/p/4174385.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!