私のような何か書きたい:C#の数値範囲を反復処理するために各ラムダ式にaを書くにはどうすればよいですか?
(0 .. 7).ForEach(I =>のsomeMethod(i))を
を私は正しい構文を見つけることができない、あるいは、これはされていませんかC#で可能です。それができたら、正しい構文はどうですか?
私のような何か書きたい:C#の数値範囲を反復処理するために各ラムダ式にaを書くにはどうすればよいですか?
(0 .. 7).ForEach(I =>のsomeMethod(i))を
を私は正しい構文を見つけることができない、あるいは、これはされていませんかC#で可能です。それができたら、正しい構文はどうですか?
を見てください、あなたは幻と、よく知られたLINQ ForEach
ステートメントを追加する必要があります。
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));
}
エキストラ読み取り
+1素晴らしい解決策です。完全な答えになるための使用例を追加してください。 – SimpleVar
私はこの解決策が好きです。フレームワークにはまだこの拡張メソッドが含まれていないということは私には奇妙に思えます。私が "foreach"と "ForEach"の記事を読んで、もっと学ぶほうがいいと思う。 –
なぜそれが含まれていないのか、それが含まれない理由は次のとおりです。http://blogs.msdn.com/b/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx –
foreach (var i in Enumerable.Range(0, 7)) SomeMethod(i);
を使用することができますし、@Richardが示唆したように、あなただけの行う、foreachの拡張メソッドを追加した場合:
Enumerable.Range(0, 7).ForEach(SomeMethod);
メソッドグループの使用は素晴らしい提案です。私はどのソリューションを好んでいたのか疑問に思っていましたが、今は拡張メソッドの方が良いと思います。 – SimpleVar
私はYoryeと一緒です:この回答はupvoteの価値がありますが、Richardのソリューションが好きです。 –
が合意した、私は個人的に自分のプロジェクトにForEach拡張メソッドを持っているが、それはBCLにはないので、最初は提案しなかった。私はリチャードの解決策をupvoted –
Enumerable.Range(0, 7).ToList().ForEach(i => whatever)
あなたはToList
を必要とし、純粋なIEnumerable
doesnのため'tはForEach
です。 (あなたが必要な場合は、あなた自身で簡単に定義することができます)
また、7を含めたい場合は、Enumerable.Range(0, 7 + 1)
とすることもできます。
はあなたが後にしているものを達成するためにEnumerable.Range();
この質問に、このような高速応答のためのみんなに感謝を!大変感謝しています:) –