迭代器是C#2.0中新增的功能
迭代器是一种方法、get访问器或运算符,使得开发人员能在类或结构中支持foreach迭代,而不必实现实现整个 IEnumerator接口
[MSDN]
当编译器检测到迭代器时,它将自动生成 IEnumerator 或 IEnumerator<T>接口的 Current、MoveNext 和 Dispose 方法
迭代器特点:
迭代器是可以返回相同类型的值的有序序列的一段代码。
迭代器可用作方法、运算符或 get 访问器的代码体。
迭代器代码使用 yield return 语句依次返回每个元素。yield break 将终止迭代。
可以在类中实现多个迭代器。每个迭代器都必须像任何类成员一样有唯一的名称,并且可以在 foreach 语句中被客户端代码调用
迭代器的返回类型必须为
IEnumeable ,IEnumerator,IEnumeable <T>,IEnumerator<T>
实现代码:
class StudentList
{
string student1 = "甲";
string student2 = "乙";
string student3 = "丙";
string student4 = "丁";
string student5 = "戊";
public string Student1
{
get
{
return student1;
}
set
{
student1 = value;
}
}
public string Student2
{
get
{
return student2;
}
set
{
student2 = value;
}
}
public string Student3
{
get
{
return student3;
}
set
{
student3 = value;
}
}
public string Student4
{
get
{
return student4;
}
set
{
student4 = value;
}
}
public string Student5
{
get
{
return student5;
}
set
{
student5 = value;
}
}
//编写该类的迭代器(实现System.Collections.IEnumerator 接口)
public System.Collections.IEnumerator GetEnumerator()
{
//通过for循环对StudentList类中的5个string类型变量进行处理
for(int i=0;i<5;i++)
{
switch (i)
{
case 0:
yield return student1;
break;
case 1:
yield return student2;
break;
case 2:
yield return student3;
break;
case 3:
yield return student4;
break;
case 4:
yield return student5;
break;
}
}
}
}
在main函数中:
//通过foreach使用迭代器获得StudentList对象中的字段值
StudentList myStudentList = new StudentList();
foreach (object student in myStudentList)
{
Console.WriteLine(student.ToString());
}
分享到:
相关推荐
C#设计模式基础示例之迭代器模式,很基础的教程,初学者使用
提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示。
主要介绍了C#中使用迭代器处理等待任务,迭代器是C#的重要特性,文中用迭代器进行了异步编程的相关实践,需要的朋友可以参考下
C#面向对象设计模式 (行为型模式) Iterator 迭代器模式 视频讲座下载
C#中关于迭代器的三个简单实例,一看便明白
迭代器、分部类、索引器. 1.索引器的概述和声明 2.类在索引器的应用, 3. 索引器在接口中使用
大家好,这是 [C#.NET 拾遗补漏] 系列的第 07 篇文章。...迭代器中的 yield 语句分为两种: yeild return,把程序控制权交回调用者并保留本地状态,调用者拿到返回的值继续往后执行。 yeild break,用于告诉程序当
主要介绍了php和C#的yield迭代器实现方法,简单说明了yield迭代器的原理,并结合具体实例形式对比分析了php和C#的yield迭代器相关使用技巧,需要的朋友可以参考下
C#2_0迭代器 这个都是本人收藏了3年的资源 现放出 都是总结了很多系统 软件项目实施过程中的经验的 慢慢积累的
主要介绍了C#迭代器模式(Iterator Pattern),包括了迭代器的适用范围及用法实例,需要的朋友可以参考下
[C#基础知识系列]专题十二:迭代器源码
主要为大家详细介绍了C#使用yield关键字构建迭代器的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
计算方法常用算法,牛顿迭代法求解方程组,可以输入线性或非线性方程组,IDE为VS2010,.NET搭建用户界面,报错功能完善。
C#2.0新的语法扩充(泛型,迭代器,匿名方法)C#2.0新的语法扩充(泛型,迭代器,匿名方法)
主要介绍了C#迭代器及Unity协程实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
主要介绍了C#特性 迭代器(下) yield以及流的延迟计算,需要的朋友可以参考下
C#2.0 锐利体验系列课程(2):匿名方法、迭代器。官方讲解,清晰直接。收藏多年,分享给大家。C#2.0经典
C#2.0 锐利体验系列课程(2):匿名方法、迭代器 教程连载,都是体验课程