|
4
|
| Klaus Byskov Pedersen · 技术社区 · 16 年前 |
|
|
1
4
我用两种方法。一个迭代列表,一个使用lazy eval。我用它们作为情况的定义。
|
|
2
5
你可以写一个扩展方法,但是
good reasons
为什么没有在上实现foreach
将IEnumerable复制到一个列表中(除非它已经是一个列表,我假设),所以您最好将IEnumerable与good old进行迭代
附录: 对我来说,eric lippert这篇文章的重点是添加foreach没有任何好处,并增加了一些潜在的陷阱:
|
|
|
3
5
我更喜欢这个:
这是一个更清楚的成语,它说收集一系列的东西在一起 然后 做一些可能改变应用程序状态的重要事情。它的老派,但它的工作,实际上是更容易理解的更广泛的观众。 |
|
|
4
2
您可以编写自己的扩展方法
这种方法在linq中不存在,因为linq基本上用于查询,而不是简单的迭代。
另外,请注意,当使用
例如,以下代码不会调用扩展方法:
鉴于以下情况:
|
|
|
5
1
您可以编写自己的扩展方法tolist(this list thelist){returnthelist;},然后避免开销。因为您的扩展方法是最具体的方法,所以它将被调用,而不是IEnumerable上的方法 |
|
|
6
-2
如果您决定通过一个扩展方法来实现这一点,我将调用它forall而不是foreach。这是为了使用与 Parallel Extensions in .NET 4.0 用途:
|
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
|
Pavel Foltyn · 如何在C中生成逆字典# 1 年前 |
|
ewok · 基于种子和上一个值创建值列表 2 年前 |
|
|
Vasu V · 将foreach转换为select语句 2 年前 |
|
Modest · 使用命名空间和文本值序列化xElement 2 年前 |