博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IEnumerable 和 IEnumerator
阅读量:6200 次
发布时间:2019-06-21

本文共 1934 字,大约阅读时间需要 6 分钟。

IEnumerable 接口只包含一个抽象的方法 GetEnumerator(),它返回一个可用于循环访问集合的 IEnumerator 对象,IEnumerator 对象是一个集合访问器。

需要给自定义的类实现 foreach 功能,就需要实现 IEnumerable 接口,下面给出一个例子。

using System;using System.Collections;using System.Collections.Generic;class NewList
: IEnumerable //实现 IEnumerable 接口的 GetEnumerator() { private List
newList = new List
(); public void Add(T item) { newList.Add(item); } public IEnumerator GetEnumerator() { return this.newList.GetEnumerator(); }}class Program{ static void Main(string[] args) { NewList
newList = new NewList
(); newList.Add("a"); newList.Add("b"); foreach(string item in newList) { Console.WriteLine("item:" + item); } }}

 

手工实现IEnumberable接口和IEnumerator接口中的方法实现的方式如下:

using System;using System.Collections;using System.Collections.Generic;class NewList
: IEnumerable //实现 IEnumerable 接口的 GetEnumerator() { private List
list = new List
(); public void Add(T item) { list.Add(item); } public IEnumerator GetEnumerator() { return new NewListEnumerator
(this); } private class NewListEnumerator
: IEnumerator { private int position = -1; private NewList
newList; public NewListEnumerator(NewList
newList) { this.newList = newList; } public object Current { get { return newList.list[position]; } } public bool MoveNext() { if(position < newList.list.Count - 1) { position++; return true; } else { return false; } } public void Reset() { position = -1; } }}class Program{ static void Main(string[] args) { NewList
newList = new NewList
(); newList.Add("a"); newList.Add("b"); foreach(string item in newList) { Console.WriteLine("item:" + item); } }}

 

转载地址:http://lftca.baihongyu.com/

你可能感兴趣的文章
[转载]持续交付和DevOps的前世今生
查看>>
初始编码
查看>>
File 需要的空间
查看>>
数据连接 DataDirectory 中的作用
查看>>
Struts2
查看>>
算术运算符和三元运算符
查看>>
七种引起偏头痛的常见食物
查看>>
利用VS2005调节dump文件
查看>>
BZOJ 1430 小猴打架
查看>>
2018.12.4 队测总结+题解
查看>>
【Linux】Centos7安装之后,双系统的情况下,怎么能在CentOS7下访问Windows的磁盘...
查看>>
Java中的数值和集合
查看>>
Code4 APP
查看>>
@synchronized(self)
查看>>
linux——攻防技术介绍|主动攻击|被动攻击
查看>>
线段树复合标记
查看>>
thinkphp使用模块/控制器/操作访问时出现No input file specified.解决方式
查看>>
软件工程概论第一章概括
查看>>
mac 上面安装jdk 1.6
查看>>
概念辨析-Hardware Description还是Hardware Developing?
查看>>