没有合适的资源?快使用搜索试试~ 我知道了~
C# IEnumerable和IEnumerator接口浅析
5 下载量 198 浏览量
2021-01-01
04:48:28
上传
评论
收藏 69KB PDF 举报
温馨提示
温故而知新,可以为师矣,有空经常复习一下基础知识是有必要的,并且能加深理解和记忆。 Foreach常用于循环访问集合,对实现IEnumerable的接口的容器进行遍历,IEnumerable和IEnumerator接口我有时候也有点迷糊,按官方的解释,IEnumerable是枚举器接口,IEnumerator是迭代器接口,从字面意思来看相差不大,逐一分析一下。 IEnumerable接口 public interface IEnumerable { IEnumerator GetEnumerator(); } 继承IEnumerable接口的类需实现暴露出来的GetEnumerator()
资源推荐
资源详情
资源评论
C# IEnumerable和和IEnumerator接口浅析接口浅析
温故而知新,可以为师矣,有空经常复习一下基础知识是有必要的,并且能加深理解和记忆。
Foreach常用于循环访问集合,对实现IEnumerable的接口的容器进行遍历,IEnumerable和IEnumerator接口我有时候也有点
迷糊,按官方的解释,IEnumerable是枚举器接口,IEnumerator是迭代器接口,从字面意思来看相差不大,逐一分析一下。
IEnumerable接口接口
public interface IEnumerable
{
IEnumerator GetEnumerator();
}
继承IEnumerable接口的类需实现暴露出来的GetEnumerator()方法,并返回一个IEnumerator接口对象,看来真正做事的是
IEnumerator,F12看一下IEnumerator又有什么鬼东西。
IEnumerator接口接口
public interface IEnumerator
{
object Current { get; }
bool MoveNext();
void Reset();
}
IEnumerator接口有三个东东,一个属性Current,返回当前集合中的元素,方法MoveNext()移动到下一个,遍历不都是向后遍
历的嘛,Reset(),字面意思重置,这个容易理解。做个假设:既然既然IEnumerable接口返回是接口返回是IEnumerator接口迭代器来实现接口迭代器来实现
的,那么仅继承的,那么仅继承IEnumerator迭代器接口能不能实现一个自定义容器?迭代器接口能不能实现一个自定义容器?
定义一个Phone类类
public class Phone
{
public string Name;
public Phone(string name)
{
this.Name = name;
}
}
定义一个名为MyEnumerator迭代器,并现实它接口IEnumerator
public class MyEnumerator : IEnumerator
{
Phone[] p;
int idx = -1;
public MyEnumerator(Phone[] t)
{
p = t;
}
public object Current
{
get
{
if (idx == -1)
return new IndexOutOfRangeException();
return p[idx];
}
}
public bool MoveNext()
{
idx++;
return p.Length > idx;
}
public void Reset()
{
idx = -1;
}
}
class Program
资源评论
weixin_38642735
- 粉丝: 3
- 资源: 951
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功