自定义迭代器使用foreach
时间:2022-04-22
本文章向大家介绍自定义迭代器使用foreach,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
foreach遍历集合好处很多,因为.net framework在foreach中已经做了try...catch和dispose的操作。那么如果想自定义一个集合并且该集合能使用foreach来遍历,一般做法是实现System.Collections.IEnumerable和System.Collections.IEnumerator接口。其实只要在集合类中实现无参数的返回IEnumerator的GetEnumerator方法就可以了。如下面代码
1 public class MyList
2 {
3 private string[] list=null;
4 public MyList(string[] sArg)
5 {
6 list = sArg;
7 }
8 public int Count{get{return list.Length;}}
9 public IEnumerator GetEnumerator()
10 {
11 return new MyListEnumerator(list);
12 }
13 }
14
15 public class MyListEnumerator:IEnumerator
16 {
17 private string[] list=null;
18 private int index=-1;
19
20 public MyListEnumerator(string[] sArg)
21 {
22 list = sArg;
23 }
24
25 public string Current{get{return list[index];}}
26 public bool MoveNext()
27 {
28 bool result = false;
29 if(index+1<list.Length)
30 {
31 ++index ;
32 result=true;
33 }
34 return result;
35 }
36 }
这样MyList就可以通过foreach来遍历了。如果要用Linq那么MyList就要实现IEnumerable接口了。
- 基于Linux整形时间的常用计算思路
- 如何追踪每一笔记录的来龙去脉:一个完整的Audit Logging解决方案[上篇]
- WCF技术剖析之二十四: ServiceDebugBehavior服务行为是如何实现异常的传播的?
- Linux64位程序移植
- history命令使用方法详解
- Linux删除乱码文件的方法
- 和智能机器一起工作,而不是惧怕它们
- Hulu大数据架构与应用经验
- SQL Server 2005:一个使用新创建的User的问题和解决方法
- Audit Logging-Stored Procedure
- Linux进程间通信(四) - 共享内存
- 扩展UltraGrid控件实现对所有数据行的全选功能[Source Code下载]
- Linux进程间通信(一) - 管道
- Linux进程间通信(二) - 消息队列
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法