C#编程入门:枚举器与foreach循环的实现解析
需积分: 0 96 浏览量
更新于2024-08-02
收藏 5.69MB PDF 举报
"这篇文档是关于Visual C#开发技术的文章集合,主要涵盖了Asp.Net编程、设计和架构、设计模式以及数据库和数据访问等相关主题。文章集合旨在帮助初学者掌握C#编程,其中特别提到了枚举器(Enumerator)的概念和在C#中的应用。"
在C#编程中,枚举器(Enumerator)是一个非常重要的概念,特别是在处理集合和迭代操作时。枚举器允许开发者使用`foreach`循环遍历集合对象的元素,提供了一种简洁、高效的编程方式。在C# 2.0之前,实现枚举器需要手动实现`IEnumerable`接口并提供`GetEnumerator`方法,返回一个实现了`IEnumerator`接口的对象。而从C# 2.0开始,引入了更简洁的语法来创建枚举器,使得这个过程变得更加便捷。
以下是一个简单的示例,展示如何在C# 1.1中创建一个自定义的枚举器:
```csharp
public class ListBox
{
private string[] strings = new string[8];
private int ctr = 0;
public ListBox(params string[] initialStrings)
{
foreach (string s in initialStrings)
{
strings[ctr++] = s;
}
}
public void Add(string theString)
{
strings[ctr] = theString;
ctr++;
}
public int GetNumEntries()
{
return ctr;
}
// 实现IEnumerable接口
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
// 返回实现IEnumerator接口的对象
public ListBoxEnumerator GetEnumerator()
{
return new ListBoxEnumerator(this);
}
}
public class ListBoxEnumerator : IEnumerator
{
private ListBox lb;
private int index = -1;
public ListBoxEnumerator(ListBox listbox)
{
lb = listbox;
}
public object Current
{
get { return lb.strings[index]; }
}
public bool MoveNext()
{
if (index < lb.getNumEntries() - 1)
{
index++;
return true;
}
else
{
return false;
}
}
public void Reset()
{
index = -1;
}
}
```
在C# 2.0及更高版本中,可以通过使用匿名方法或者`yield return`语句简化枚举器的实现,如下所示:
```csharp
public class ImprovedListBox
{
private string[] strings = new string[8];
private int ctr = 0;
public ImprovedListBox(params string[] initialStrings)
{
foreach (string s in initialStrings)
{
strings[ctr++] = s;
}
}
public void Add(string theString)
{
strings[ctr] = theString;
ctr++;
}
public int GetNumEntries()
{
return ctr;
}
// 使用yield return实现枚举器
public IEnumerator<string> GetEnumerator()
{
for (int i = 0; i < ctr; i++)
{
yield return strings[i];
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
```
通过这种方式,`ImprovedListBox`类无需显式地创建一个单独的枚举器类,而是直接在`GetEnumerator`方法内使用`yield return`语句返回每个元素,简化了代码结构。这使得在C# 2.0及更高版本中实现枚举器变得更加直观和高效。
枚举器在C#编程中扮演着关键角色,特别是在处理集合数据时。它们使开发者能够以流畅、可读性强的方式遍历集合,而无需关心底层的迭代细节。随着语言版本的更新,C#为创建枚举器提供了更加简洁和强大的工具,使得开发更加高效。
242 浏览量
2018-09-14 上传
2013-12-01 上传
2011-03-07 上传
2009-02-10 上传
2008-09-02 上传
2023-03-04 上传
120 浏览量
2010-02-03 上传
zh_renyi
- 粉丝: 7
- 资源: 4
最新资源
- Angular程序高效加载与展示海量Excel数据技巧
- Argos客户端开发流程及Vue配置指南
- 基于源码的PHP Webshell审查工具介绍
- Mina任务部署Rpush教程与实践指南
- 密歇根大学主题新标签页壁纸与多功能扩展
- Golang编程入门:基础代码学习教程
- Aplysia吸引子分析MATLAB代码套件解读
- 程序性竞争问题解决实践指南
- lyra: Rust语言实现的特征提取POC功能
- Chrome扩展:NBA全明星新标签壁纸
- 探索通用Lisp用户空间文件系统clufs_0.7
- dheap: Haxe实现的高效D-ary堆算法
- 利用BladeRF实现简易VNA频率响应分析工具
- 深度解析Amazon SQS在C#中的应用实践
- 正义联盟计划管理系统:udemy-heroes-demo-09
- JavaScript语法jsonpointer替代实现介绍