私は次のようなものを書きたいです:
(0 .. 7).ForEach(i => SomeMethod(i))
しかし、正しい構文が見つからないか、C#ではこれが不可能です。それができる場合、正しい構文は何ですか?
私は次のようなものを書きたいです:
(0 .. 7).ForEach(i => SomeMethod(i))
しかし、正しい構文が見つからないか、C#ではこれが不可能です。それができる場合、正しい構文は何ですか?
Enumerable.Rangeメソッドを使用できます
foreach (var i in Enumerable.Range(0, 7)) SomeMethod(i);
また、@ Richardが提案したようにForEach拡張メソッドを追加する場合は、次のようにします。
Enumerable.Range(0, 7).ForEach(SomeMethod);
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));
}
追加の読書
Enumerable.Range(0, 7).ToList().ForEach(i => whatever)
ToList
ピュアにIEnumerable
はがないので、必要ですForEach
。(必要に応じて、独自に簡単に定義できます。)
Enumerable.Range(0, 7 + 1)
または、7も含めたい場合は、多分。
見てEnumerable.Range();