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

ForEach目的を達成するには、幻想的でよく知られているLINQステートメントを追加する必要があります。

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 に答える