声明IEnumerator的枚举数 要创建非泛型接口的枚举数,必须声明实现IEnumerator接口的类,IEnumerator接口有如下特性: 1.她是System.Collections命名空间的成员 2.它包含3个方法Current.MoveNext和Reset 例如:下面代码实现了一个列出颜色名数组的枚举数类: using System.Collections; class ColorEnumerator:IEnumerator { string [] Colors; ; public…
下面的代码示例演示如何实现自定义集合的 IEnumerable 和 IEnumerator 接口: using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { public class Person { publ…
数组可以被foreach语句遍历数组中的元素,原因是数组可以按需提供一个叫做枚举数(enumerator)的对象.枚举数可以依次返回请求的数组的元素. 对于有枚举数的类型而言,必须有一个方法来获取它们.在.NET中获取一个对象枚举数的标准用法是调用对象的GetEnumerator方法.实现GetEnumerator方法的类型叫做可枚举类型(enumerable),数组就是可枚举类型. 要注意枚举数(enumerator)和可枚举类型(enumerable)的区别和联系. 枚举数是可以依次返回集合…
大道至简,始终认为简洁是一门优秀的编程语言的一个必要条件.相对来说,C#是比较简洁的,也越来越简洁.在C#中,一个关键字或者语法糖在编译器层面为我们做了很多乏味的工作,可能实现的是一个设计模式,甚至是一个算法.例如:lock关键字让用对象获取互斥锁从而实现线程同步,本质上是通过Monitor类来实现的,显然简洁很多.本文要讲的枚举数和迭代器在.net集合类被广泛使用,当然遵循着简洁的设计思想. 1.枚举数 1.1foreach的本质 我们知道,实现了IEnumerable接口的类型对象是可for…
当自定义类需要实现索引时,可以在类中实现索引器. 用Table作为例子,Table由多个Row组成,Row由多个Cell组成, 我们需要实现自定义的table[0],row[0] 索引器定义格式为 [修饰符] 数据类型 this[索引类型 index] 以下是代码 /// <summary> /// 单元格 /// </summary> public class Cell { /// <summary> /// Value /// </summary> pu…
1.  IEnumerable 与  IEnumerator IEnumerable枚举器接口的重要性,说一万句话都不过分.几乎所有集合都实现了这个接口,Linq的核心也依赖于这个万能的接口.C语言的for循环写得心烦,foreach就顺畅了很多. IEnumerable只有一个抽象方法:GetEnumerator(),而IEnumerator又是一个迭代器接口,真正实现了访问集合的功能.  IEnumerator只有一个Current属性,两个方法MoveNext和Reset. 有个小问题,只…
IEnumerable接口顾名思义就是 可枚举的,可列举的. 接口也很简单,返回一个 枚举器对象 IEnumerator . [ComVisible(true), Guid("496B0ABE-CDEE-11d3-88E8-00902754C43A")] public interface IEnumerable { [DispId(-)] IEnumerator GetEnumerator(); } 1.  IEnumerable 与  IEnumerator IEnumerable只…
IEnumberator函数成员 Current返回序列中当前位置项的 属性 只读属性 返回object类型 MoveNext把枚举器位置前进到集合中下一项的方法 新位置有效返回true,否则false 枚举器原始位置在序列第一项前面,所以如果要用Current必须先用MoveNext() Reset枚举器位置重置为初始位置 IEnumerable接口函数成员 该接口只有一个方法GetEnumerator() IEnumerable和 IEnumberator使用范例 一个具有IEnumbera…
使用IEnumerable接口遍历数据,这在项目中会经常的用到,这个类型呢主要是一个枚举器. 1.首先需要让该类型实现一个名字叫IEnumerable的接口,实现该接口的主要目的是为了让当前类型中增加一个名字叫GetEnumerator()的方法. public class Person : IEnumerable { private string[] Friends = new string[] { "张三", "李四", "王五", &quo…
一,原理 首先,我们要明白Git是什么,它是一个管理工具或软件,用来管理什么的呢?当然是在软件开发过程中管理软件或者文件的不同版本的工具,一些作家也可以用这个管理自己创作的文本文件,由Linus开发的,也是Linux系统开发所用到的分布式版本控制软件.一说到分布式,其实就是每个电脑都有这么个版本库,而摒弃了传统的中心文件系统服务,所以每个人都能保存.还原之前的版本.在航天二院实习的时候,mentor让我改一个软件的Bug,由于国企没有外网,所以不能用github,院里面也没有搭建自己的Git文件…