3

我想写一些类似的东西:

(0 .. 7).ForEach(i => SomeMethod(i))

但要么我找不到正确的语法,要么这在 C# 中是不可能的。如果可以,请问正确的语法是什么?

4

4 回答 4

4

您可以使用Enumerable.Range 方法

foreach (var i in Enumerable.Range(0, 7)) SomeMethod(i);

如果您按照@Richard 的建议添加 ForEach 扩展方法,只需执行以下操作:

Enumerable.Range(0, 7).ForEach(SomeMethod);
于 2012-05-14T09:00:24.123 回答
4

为了实现您所追求的,您需要添加虚幻且众所周知的 LINQForEach语句。

public static void ForEach<T>(this IEnumerable<T> source, Action<T> action)
{
    foreach(T item in source)
    {
        action(item);
    }
}

用法:

Enumerable.Range(0, 7).ForEach(i => SomeMethod(i));

Enumerable.Range(0, 7).ForEach(i => Console.WriteLine(i.ToString());

Enumerable.Range(0, 7).ForEach(i => 
{
    string oddEven = i % 2 == 0 ? "even" : "odd";
    Console.WriteLine(string.Format("{0} is {1}", i, oddEven));
}

额外阅读

“foreach”与“ForEach”

于 2012-05-14T09:02:11.490 回答
0

Enumerable.Range(0, 7).ToList().ForEach(i => whatever)

你需要ToList,因为纯IEnumerable没有ForEach。(好吧,如果需要,您可以轻松定义自己的。)

或者Enumerable.Range(0, 7 + 1),如果你也想包括 7。

于 2012-05-14T09:00:49.777 回答
0

看一下Enumerable.Range();

于 2012-05-14T09:00:59.290 回答