kev*_*vin 5 c# java design-patterns
嗨伙计们,我正在学习设计模式,我找到了Iterator.我们还需要使用吗?由于我们有收藏,我很困惑为什么我们仍然需要Iterator设计模式.
谢谢
事实上,集合在两种语言中都主动使用迭代器.每当你遍历集合的元素时,都会涉及某种迭代器,即使你没有在代码中明确地看到它.我用Java来举例,因为我对它更熟悉.
在Java 5之前迭代集合的首选习惯用法 - 使用Iterator
显式:
for (Iterator i = c.iterator(); i.hasNext(); ) {
doSomething((Element) i.next()); // (No generics before 1.5)
}
Run Code Online (Sandbox Code Playgroud)
从Java 5开始:
for (Element e : elements) {
doSomething(e);
}
Run Code Online (Sandbox Code Playgroud)
后者导致实际上相同的字节码,使用Iterator
幕后.
IEnumerator<T>
是一个迭代器并IEnumerable<T>
创建它们.几乎所有的集合都实现了IEnumerable<T>
.
它是Linq-To-Objects的核心,这是C#3的核心功能之一.因此迭代器在现代C#中非常重要.
C#3还引入了一种特殊的语言功能,允许您使用yield return
语法轻松实现迭代器.
foreach
也基于迭代器.