您的位置:首页 > 其它

《转》IEnumerable、IEnumerator两个接口的认识

2015-10-20 17:43 330 查看
前言

  IEnumerable、IEnumerator到现在为止对这两个接口还是不太理解,不理解但是自己总是想着试着要搞明白,毕竟自己用的少,所以在此先记录一下。

查看并使用两个接口

  接下来我们先来看看两个接口的定义。

  先来看一下IEnumerable接口,其实看过这个接口之后,发现它其实是非常的简单,只包含一个方法GetEnumerator(),它返回一个可用于循环访问集合的IEnumerator对象,如下面截图所示:

View Code
其实上面例子中的调用我们就可以使用foreach来调用了,那么现在我们来用foreach来调用看看。

static void Main(string[] args)
{
MyList list=new MyList();
foreach (object obj in list)
{
Console.WriteLine(obj.ToString());
}
Console.ReadLine();
}


总结

通过上面我实现的几个简单的例子可以发现,一个类型支持foreach遍历的条件可以是:

  1、第一个方案是:这个类实现IEnumerable接口

  2、第二个方案是:这个类有一个public的GetEnumerator的实例方法(不用继承IEnumerable实现接口),并且返回类型中有public 的bool MoveNext()实例方法和public的Current实例属性。

实现了IEnmerable<T>接口的集合,是强类型的。它为子对象的迭代提供类型更加安全的方式。

原文:http://www.cnblogs.com/aehyok/p/3642103.html

public class peoples
{
public string name { get; set; }
public int age { get; set; }
}
public class people:IEnumerable
{
peoples[] poli = new peoples[3] { new peoples() { age = 2, name = "dd开始的" }, new peoples() { name = "啊圣诞节", age = 34 }, new peoples() { name = "asks", age = 34 } };

#region IEnumerable 成员

public IEnumerator GetEnumerator()
{
return this.poli.GetEnumerator();
}

#endregion
}


可以自己实现接口完成迭代。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: