C# IEnumerator和IEnumerable的区别

C#有很多接口 ,这些接口牵扯一些复杂的算法问题,让很多新手对这些接口很难理解,尤其是IEnumerator和IEnumerable这两个接口,在IEnumeratorIEnumerable会让新手很糊涂:

首先,在看这篇文章的时候,你一定要清晰的知道 泛型 代表着一种类型,这种类型可以是任意类型。这才有了LIST的概念。T可以承载任意类型。很多培训机构在讲泛型的时候直接就是 Array ArrayList List告诉你怎么用,可为什么这样用,到底他们的运行机制等等一系列概念抽象的问题,老师一概而过。尤其到后面的Linq WPF MVC一些项目实战中,大量会用到这些概念,如果你没有掌握,后面基本上也只是照猫画虎,等真正遇到项目问题的时候,你会变得素手无策。不闲扯了,文章中有 不对的地方,还望各位大牛批评指正。

IEnumerator和IEnumerable的区别
① IEnumarator 是一个真正的集合访问器,提供在普通即可中遍历的接口 有 Current,MoveNext()
Reset() 其中Current返回时object类型
② IEnumerable 是暴露一个IEnumerator(只包含一个抽象方法GetEnumerator() 该方法返回一个可
以用于循环访问集合的IEnumarator对象) 支持在普通集合中遍历
③ IEnumerator 继承自IEnumerator 有Current属性 返回的是T类型
④ IEnumerable 继承自IEnumerable 暴露一个IEnumerator 支持在泛型集合中遍历
⑤ public Interface IEnumerable //告知调方对象的子项可以枚举
{
IEnumerator GetEnumerator();
}
⑥ public interface IEnumerator // 允许调方获取一个容器的子项
{
bool MoveNext();
object Current{get;}
void Reset() 将游标重置到第一个成员前面
}
IEnumerable和IEnumerator之间的关系,以及foreach的运行原理.
1> 如果一个存放集合元素的类的对象,没有实现IEnmerable 不能使用foreach()语句进行遍历
① 我们我们循环遍历的都是对象而不是类,只是这个对象时一个集合
2> 当存放集合元素的类实现 IEnumerable //这时用foreach()遍历Garage对象的值时,得到了
每一个Gra对象的值.
3>IEnumerable接口的GetEnumerator() 返回集合中的子集 是foreach()遍历的基础.

          public   class Garage: IEnumerable
{
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值