- 1、本文档共33页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 第7章定解问题.ppt
- 第7章均匀传输线中的导行电磁波.ppt
- 第7章恶意代码与防治.ppt
- 第7章氧化还原与电极电势.pptx
- 第6章腔肠动物门.ppt
- 第7章热水及燃气供应.ppt
- 第7章电子商务支付系统.pptx
- 第7章办公中常用工具软件.doc
- 第7章电动汽车的设计.ppt
- 第7章矿井主要水害类型及其特征.pptx
- 未来旅游和旅游业的四种情景WEF_Four_Scenarios_for_the_Future_of_Travel_and_Tourism_2025.pdf
- 行动号召_发展可持续资本市场、融资能源转型和构建项目管线ESCAP_IRENA_PAR_Call_to_action_FFD-6_2025.pdf
- 地中海地区的能源转型 优化跨区域能源流动IRENA_PLA_Energy_transition_Mediterranean_brochure_2025.pdf
- 让合作在气候和自然中发挥作用来自GAEA奖项获奖者的实用见解WEF_Making_Collaboration_Work_for_Climate_and_Nature.pdf
- 大模型和智能体安全风险治理与防护.pdf
- 可再生能源统计 2025IRENA_DAT_RE_Statistics_2025.pdf
- 2025中国宠物食品行业现状报告.pdf
- 202507新茶饮果蔬化消费需求洞察.pdf
- emperor ying zheng创建贵族等级-他可以不会传递给下一代section 4.pdf
- 装备管理干部岗位练兵复习测试附答案.doc
文档评论(0)