要使一个类支持 foreach 遍历,实现过程怎样?
2013-04-21 20:11
246 查看
必须实现 IEnumerable,IEnumerator这两个接口。
View Code
View Code
using System.Collections; // Declare the Tokens class: public class Tokens : IEnumerable { private string[] elements; Tokens(string source, char[] delimiters) { // Parse the string into tokens: elements = source.Split(delimiters); } // IEnumerable Interface Implementation: // Declaration of the GetEnumerator() method // required by IEnumerable public IEnumerator GetEnumerator() { return new TokenEnumerator(this); } // Inner class implements IEnumerator interface: private class TokenEnumerator : IEnumerator { private int position = -1; private Tokens t; public TokenEnumerator(Tokens t) { this.t = t; } // Declare the MoveNext method required by IEnumerator: public bool MoveNext() { if (position < t.elements.Length - 1) { position++; return true; } else { return false; } } // Declare the Reset method required by IEnumerator: public void Reset() { position = -1; } // Declare the Current property required by IEnumerator: public object Current { get { return t.elements[position]; } } } // Test Tokens, TokenEnumerator static void Main() { // Testing Tokens by breaking the string into tokens: Tokens f = new Tokens("This is a sample sentence.", new char[] { ' ', '-' }); foreach (string item in f) { System.Console.WriteLine(item); } } }
相关文章推荐
- 实现了IEnumerable接口的GetEnumerator 即可使用 Foreach遍历,返回一个IEnumerator对象
- 怎样写一个实现翻页的存储过程
- b803 用java怎样实现遍历一个字符串的每一个字母
- 怎样实现一个二维码同时支持微信支付和支付宝支付
- 一个类型要想支持foreach则必须实现IEnumerable,IEnumerator两个接口。
- 驱动如何实现对mdev的支持(自动创建一个设备)
- 分析一个通用的rtsp server实现过程串联模块
- 学习是怎样的一个过程??
- SDK学习笔记2-一个Win32窗口程序实现过程
- Vue.js实现一个SPA登录页面的过程【推荐】
- foreach实现MyBatis遍历集合与批量操作数据
- 一个不用游标实现遍历结果集的TSQL例
- javascript 学习之原型示例练习--- 实现一个each方法,遍历多维数组
- 记一个同时支持模糊匹配和静态推导的Atom语法补全插件的开发过程: 序
- 【Java编程】foreach支持集合、Collection、Iterable遍历原因分析
- 一个高手写的递归遍历多层结构的存储过程(转载)
- 使用WIN32汇编语言实现一个基本windows窗体的过程分析
- 一个Excel导出类的实现过程(一):泛型与反射
- 一次完整的HTTP事务是怎样一个过程?
- 下面的代码实现遍历 IIS 6应用程序池的一个方法