首先是IEnumerable与IEnumerator的定义: 1.IEnumerable接口允许使用foreach循环,包含GetEnumerator()方法,可以迭代集合中的项. 2.IEnumerator接口是一个真正的集合访问器,它包含MoveNext()方法和Current属性,在foreach循环中,如果MoveNext()返回True,则就是用IEnumerator接口的Current属性来获取对象的一个引用,用于foreach循环. 3.如果要迭代一个类,可以使用GetEnumer…
对于很多刚开始学习C#同学来说经常会遇到IEnumerable这个关键字,enumerate在字典里的解释是列举,枚举,因此可想而知这个关键字肯定是和列举数据有关的操作. public interface IEnumerable { //IEnumerable只有一个方法,返回可循环访问集合的枚举数. IEnumerator GetEnumerator() ; } public interface IEnumerator { // 方法 //移到集合的下一个元素.如果成功则返回为 true:如果…
IEnumerator:是一个真正的集合访问器,提供在普通集合中遍历的接口,有Current,MoveNext(),Reset(),其中Current返回的是object类型.IEnumerable: 暴露一个IEnumerator(只包含一个抽象的方法GetEnumerator(),该方法返回一个可用于循环访问集合的IEnumerator对象),支持在普通集合中的遍历.IEnumerator<T>:继承自IEnumerator,有Current属性,返回的是T类型.IEnumerable&l…
一. IEnumerator 解释:它是一个的集合访问器,使用foreach语句遍历集合或数组时,就是调用 Current.MoveNext()的结果. // 定义如下public interface IEnumerator { // 返回结果: 集合中的当前元素. object Current { get; } // 返回结果: 如果枚举数成功地推进到下一个元素,则为 true:如果枚举数越过集合的结尾,则为 false. bool MoveNext(); // 调用结果:将枚举数设置为其初始…
IEnumerable / IEnumerator 首先,IEnumerable / IEnumerator 接口定义如下: public interface IEnumerable /// 可枚举接口 { IEnumerator GetEnumerator(); } public interface IEnumerator /// 枚举器接口 { object Current { get; } bool MoveNext(); void Reset(); } 注:Current 没有 set…
IList, ICollection ,IEnumerable 很显然,这些都是集合接口的定义,先看看定义: // 摘要: // 表示可按照索引单独访问的对象的非泛型集合. [ComVisible(true)] public interface IList : ICollection, IEnumerable { bool IsFixedSize { get; } bool IsReadOnly { get; } object this[int index] { get; set; } int…
额...今天看了半天Ilist<T>和List<T>的区别,然后惊奇的发现使用IList<T>还是List<T>对我的项目来说没有区别...  在C#中,数组.ArrayList都能够存储一组对象,那么三者到底有什么样的区别呢? 数组 数组在C#中最早出现的.在内存中是连续的,所以它的索引速度非常快,而且赋值与修改元素也很简单. string[] s=new string[2]; //赋值 s[0]="a"; s[1]="b&q…
我们先思考几个问题: 为什么在foreach中不能修改item的值? 要实现foreach需要满足什么条件? 为什么Linq to Object中要返回IEnumerable? 接下来,先开始我们的正文. 自己实现迭代器 .net中迭代器是通过IEnumerable和IEnumerator接口来实现的,今天我们也来依葫芦画瓢. 首先来看看这两个接口的定义: 并没有想象的那么复杂.其中IEnumerable只有一个返回IEnumerator的GetEnumerator方法.而IEnumerator…
public interface IEnumerable {     IEnumerator GetEnumerator(); }   public interface IEnumerator {     bool MoveNext();     void Reset();       Object Current { get; } }   IEnumerable和IEnumerator有什么区别?这是一个很让人困惑的问题(在很多forum里都看到有人在问这个问题).研究了半天,得到以下几点认识…
一:一个简单的例子 int[] myArray = { 1, 32, 43, 343 }; IEnumerator myie = myArray.GetEnumerator(); myie.Reset(); while (myie.MoveNext()) { int i = (int)myie.Current; Console.WriteLine("Value: {0}", i); } 通常我们这样会这样做: foreach (int item in myArray) Console.…