迭代器概述
-
迭代器是可以返回相同类型的值的有序序列的一段代码。
-
迭代器可用作方法、运算符或 get 访问器的代码体。
-
迭代器代码使用 yield return 语句依次返回每个元素。yield break 将终止迭代。
-
可以在类中实现多个迭代器。每个迭代器都必须像任何类成员一样有唯一的名称,并且可以在 foreach 语句中被客户端代码调用,如下所示:foreach(int x in SampleClass.Iterator2){}
-
迭代器的返回类型必须为 IEnumerable、<link tabindex="" keywords="T:System.Collections.IEnumerator">、IEnumerable 或 <link tabindex="" keywords="T:System.Collections.Generic.IEnumerator`1">。
迭代器对集合类特别有用
class Students
{
/*
* 创建迭代器最常用的方法是对 IEnumerable 接口实现 GetEnumerator 方法。
*
* yield关键字在迭代器块中用于向枚举数对象提供值或发出迭代结束信号。它的形式为下列之一:
* yield return expression;
* yield break;
*/
public IEnumerator GetEnumerator()
{
for (int i = 0; i < 10; i++)
{
yield return i;
}
}
/*
* 还可以使用命名的迭代器以支持通过不同的方式循环访问同一数据集合。
* 例如,您可以提供一个按升序返回元素的迭代器,而提供按降序返回元素的另一个迭代器。
* 迭代器还可以带有参数,以便允许客户端控制全部或部分迭代行为。
*/
public IEnumerable SampleIterator(int low, int hight)
{
for (int i = low; i <= hight; i++)
{
yield return i;
}
}
测试迭代器:
private void button_testForEach_Click(object sender, EventArgs e)
{
Students stu = new Students();
foreach (int i in stu)
this.textBox_foreach.AppendText(i.ToString());
this.textBox_foreach.AppendText("\n");
foreach (int i in stu.SampleIterator(5,9))
this.textBox_foreach.AppendText(i.ToString());
this.textBox_foreach.AppendText("\n");
int[] numbers = { 4, 5, 6, 1, 2, 3, -2, -1, 0 }; //数组
foreach (int i in numbers)
{
this.textBox_foreach.AppendText(i.ToString());
}
}
分享到:
相关推荐
它引入了大量新特性,如改进的性能、新的语言支持(如C# 2.0和VB.NET 2005)、泛型、匿名方法、迭代器和部分信任代码执行等。同时,.NET Framework 2.0也包含了ASP.NET 2.0,提供了更强大的Web应用程序开发能力。 2...
C# 2.0是.NET Framework的一个重要版本,引入了诸如匿名方法、迭代器、属性改进、类型安全的集合等新特性。`MySql.Data_NET2.0`驱动确保了这些新特性的兼容性,让开发者在C# 2.0的环境下也能方便地使用MySQL数据库。...
3. **迭代器**:C# 2.0的迭代器使你能轻松实现自定义的遍历逻辑,如在自定义数据结构上进行foreach循环。通过yield return关键字,你可以逐个返回集合中的元素,而无需构建完整的列表。 4. **属性改进**:C# 2.0...
3. **迭代器**:迭代器通过`yield return`关键字实现了数据流的延迟执行和记忆化。它们允许自定义类型的行为,使得它们可以像集合一样被遍历,常用于实现自定义数据结构的枚举。 4. **属性访问器改进**:C# 2.0允许...
这个讲解将深入探讨这些关键特性,包括C# 2.0的简介、泛型、匿名方法、迭代器以及不完全类。 一、C# 2.0简介 C# 2.0是2005年发布的,它是.NET Framework 2.0的一部分。这个版本的目标是提高开发效率,增强类型安全...
2. **迭代器**:迭代器使用`yield return`语句,使类能够实现自定义的迭代行为,例如遍历集合或生成序列。这在实现数据流、懒加载或无限序列时非常方便。 3. **属性(Property)的改进**:C# 2.0增加了自动属性,...
6. yield关键字:C# 2.0通过yield关键字实现了迭代器,允许在运行时生成一系列值,而无需创建完整的集合,这对处理大数据集或内存敏感的应用非常有用。 7. 允许空引用:C# 2.0引入了可空类型,用`?`符号标记,使得...
《完全手册:C#2.0程序设计详解电子教程》是一部深入探讨C# 2.0编程技术的全面性资源,旨在帮助读者掌握C#语言的基础与高级特性,以及利用这些特性进行高效软件开发。本教程涵盖了从入门到进阶的各个方面,包括语法...
2. **迭代器**:C# 2.0引入了迭代器,使得自定义类型可以像内置集合一样被遍历。`yield return`关键字用于在遍历过程中逐个返回元素,这在实现自定义数据结构或生成器函数时非常实用。 3. **部分类(Partial ...
C# 2.0是.NET Framework的重要组成部分,相比C# 1.0,它引入了许多新特性,例如匿名方法、迭代器、泛型、属性改进、自动属性、匿名类型等,这些都极大地提升了程序员的效率和代码的可读性。在《C# 2.0 宝典》中,你...
2. **迭代器**:迭代器使得开发者可以自定义迭代过程,用于遍历集合或其他数据结构。`yield return`关键字使得创建复杂的迭代行为变得更加简单。 3. **泛型**:泛型是C# 2.0中的重要特性,它允许创建类型安全且可...
C# 2.0 引入了多项增强功能,如匿名方法、lambda 表达式、迭代器等,这些特性在代码生成器中得到充分利用。例如,匿名方法可以用于简化事件处理逻辑的编写;lambda 表达式可以简洁地表示函数式编程思想,方便生成...
### C#2.0 锐利体验系列课程(2):匿名方法、迭代器 #### 知识点一:匿名方法 ##### 匿名方法的引入 在C#2.0之前,即C#1.0版本中,委托实例化的语法较为繁琐,如需将事件处理器绑定至按钮点击事件,需要定义一个名...
迭代器允许自定义类型实现迭代行为,就像内置的集合类型一样。通过`yield return`语句,开发者可以在遍历集合或执行其他迭代逻辑时控制流,而无需创建完整的集合类。 3. **部分类型(Partial Types)**: 部分...
《C#2.0 锐利体验》是一套深度探讨C#编程语言特性的课程,主要聚焦于C#2.0版本的新特性及其在实际开发中的应用。通过以下几个主题,我们将深入理解C#2.0如何提升编程效率和代码质量。 1. **泛型编程**(C#2.0.锐利...
3. **迭代器**:C# 2.0引入迭代器,通过`yield return`语句,可以实现自定义类型的迭代,如遍历集合或生成序列。这使得编写自己的枚举器类变得更加简单。 4. **部分类型(Partial Types)**:部分类型允许将一个类...
本篇文章将深入探讨C#2.0中引入的四个关键特性:泛型、匿名方法、迭代器和不完整类型(partial type),并解释它们如何改变C#编程的面貌。 ### 泛型 #### 19.1 泛型的概念与优势 泛型是C#2.0中最具革命性的特性之...
本资源《C#2.0新特性(CHM)》是一部关于这一版本的详细指南,它涵盖了C# 2.0的关键更新,帮助开发者掌握这一阶段的编程技术。 一、匿名方法 匿名方法是C# 2.0引入的一个重要特性,允许在不定义单独函数的情况下直接...
### C# 7.1 和 .NET Core 2.0:现代跨平台开发(第三版) #### 一、概述 本书《C# 7.1 和 .NET Core 2.0 —— 现代跨平台开发》由 Mark J. Price 编写,是关于学习如何使用 C# 7.1 和 .NET Core 2.0 进行高效跨...
C# 2.0是.NET框架的一个重要版本,它引入了许多新特性,如匿名方法、迭代器、自动属性、局部类型推断(var关键字)等,这些都在Web开发中有着广泛的应用。以下是几个关键的知识点: 1. **匿名方法与Lambda表达式**...