第8章 枚举器和的迭代器.pptx

  1. 1、本文档共33页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 枚举器和的迭代器

第8章 枚举器和迭代器;8.1 枚举器; 这是因为数组可以按需提供一个称为枚举器(enumerator,或枚举数)的对象。 枚举器可用于依次读取数组中的元素,但不能用于修改基础集合,所以,不能用迭代变量(或枚举变量)item修改myarr的元素。 Array类有一个GetEnumerator方法用于返回当前使用的枚举器,除了Array类外,还有一些其他类型提供了GetEnumerator方法,凡是提供了GetEnumerator方法的类型称为可枚举类型,显然,数组是可枚举类型。;8.1.2 IEnumerator接口; 最初,枚举器被定位于集合中第一个元素的前面。Reset?方法用于将枚举器返回到此位置。在此位置上,未定义?Current。?因此,在读取?Current?的值之前,必须调用?MoveNext将枚举数定位到集合的第一个元素。 ?再次调用MoveNext方法将?Current属性定位到下一个元素。如果?MoveNext越过集合的末尾,则枚举器将定位到集合中最后一个元素的后面,而且MoveNext返回?false。?;对于前面的foreach语句的代码,其执行过程如下:;前面foreach语句代码的功能与以下代码是相同的: int[] myarr = { 1, 2, 3, 4, 5 }; Enumerator ie = myarr.GetEnumerator(); while (ie.MoveNext()) Console.Write({0} ,ie.Current); Console.WriteLine();;8.1.3 IEnumerable接口; 【例8.1】设计一个学生类Student和一个People类,People类包含若干学生对象,通过从IEnumerable 接口继承使其成为可枚举类型,并设计相应的枚举器类PeopleEnum(从 IEnumerator接口继承)。最后用foreach语句对People类对象执行枚举。;using System; using System.Collections; namespace proj8_1 { public class Student //声明Student类 { public int id; //学号 public string name; //姓名 public Student(int id,string name) //构造函数 { this.id = id; this.name = name; } };public class People : IEnumerable //声明可枚举类 { private Student[] sts; //sts为Student对象数组 public People(Student[] pArray) //People类的构造函数,创建sts { sts = new Student[pArray.Length]; for (int i = 0; i pArray.Length; i++) sts[i] = pArray[i]; } IEnumerator IEnumerable.GetEnumerator()//实现IEnumerable的GetEnumerator方法 { return (IEnumerator)GetEnumerator(); //调用People类的GetEnumerator方法,并将结果转换为枚举器对象 } public PeopleEnum GetEnumerator() //定义People类的GetEnumerator { return new PeopleEnum(sts); } };public class PeopleEnum : IEnumerator //声明枚举器类 { public Student[] sts; int position = -1; //位置字段,初始为-1 public PeopleE

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档