不定义IEnumerable和IEnumrator接口就能使用foreach语句的方法
来源:互联网 发布:最短路径算法java 编辑:程序博客网 时间:2024/05/01 14:03
大家都知道foreach语句在定义了IEnumerable的接口上工作。比如:
string[] sArr = new string[10];
foreach (string s in sArr)
Console.WriteLine(s);
如果没有定义IEnumerable接口,就会出现编译错误。但是这个限制也不是绝对的。按照C#语言规范,只要能满足下面的条件,就算不定义IEnumrable/IEnumrator接口也可以使用foreach语句。
1. 假定表达式具有GetEnumrator()方法。
2. GetEnumerator()方法返回的对象定义了所有IEnumerator接口定义的方法,即
public interface IEnumerator
{ // Methods
bool MoveNext();
void Reset();
// Properties
object Current { get; }
}
LineReader的另一个特点是GetEnumerator()方法:
public LineReader GetEnumerator()
{
return this;
}
没有创建一个新对象实例,而是返回自身,这样可以节省一次创建对象的开销,同时也简化了程序逻辑。缺点是,一个LineReader只能同时打开一个Enumerator,打开一个以上Enumerator时,程序运行不正确。但从LineReader运行的场景来看。我们总是按照foreach (string line in new LineReader(…))的方式使用,不会出现打开同时打开两个Enumerator,或者在多线程中使用的情况。
- 不定义IEnumerable和IEnumrator接口就能使用foreach语句的方法
- IEnumerable和IEnumrator用法
- 实现IEnumerable和IEnumerator接口以支持foreach语句
- 如何自己实现IEnumerable和IEnumerator接口以支持foreach语句
- 如何自己实现IEnumerable和IEnumerator接口以支持foreach语句
- C#的foreach可以遍历不继承IEnumerable接口的集合
- IEnumerable 接口---实现该接口里的成员的类,可以使用foreach循环访问集合
- 使用IEnumerable和IEnumerator接口
- foreach/yield语句自定义IEnumerable和IEnumerator类型
- c#中foreach与接口IEnumerator和IEnumerable
- c#中foreach与接口IEnumerator和IEnumerable
- IEnumerable和IEnumerable<T>接口
- IEnumerable和IEnumerable<T>接口
- IEnumerable和IEnumerable<T>接口
- IEnumerable和IEnumerable T接口
- IEnumerable和IEnumerable<T>接口
- foreach 语句的使用
- IEnumerable和IEnumerator的使用
- 日本兵在伊拉克的保命绝招(日本机密)
- XmlDocument输出XML文件出现cast exception的解决
- 职业规划:30岁前如何达到年薪10万
- 优化代码,看看哪个执行速度更快!!!
- 教学站教学教务管理系统(esTEAMS)项目开题报告
- 不定义IEnumerable和IEnumrator接口就能使用foreach语句的方法
- 看韩剧有感(娘娘和井上阁下)
- 构架师之路
- SAS中显示宏的实际内容
- 冰冷的城市有着不朽的轮滑-记8。28活动
- 游戏框架随想,Effect的抽象
- 中国到底有多少人懂得软件开发
- 游戏框架随想2 卷轴和非卷轴
- [转]Plone的概念图