ienumerable の linq 拡張メソッドは非常に便利ですが、何も返さずに列挙内の各項目に計算を適用するだけの場合は、それほど役に立ちません。だから、おそらく正しい方法が欠けているだけなのか、それとも組み込みバージョンが利用可能であればそれを使用したいので本当に存在しないのかと思っていましたが、見つけられませんでした:-)
.ForEach メソッドがどこかにあると断言できたのですが、まだ見つけていません。それまでの間、他の人に役立つ場合に備えて、独自のバージョンを作成しました。
using System.Collections;
using System.Collections.Generic;
public delegate void Function<T>(T item);
public delegate void Function(object item);
public static class EnumerableExtensions
{
public static void For(this IEnumerable enumerable, Function func)
{
foreach (object item in enumerable)
{
func(item);
}
}
public static void For<T>(this IEnumerable<T> enumerable, Function<T> func)
{
foreach (T item in enumerable)
{
func(item);
}
}
}
使用法は次のとおりです。
myEnumerable.For<MyClass>(delegate(MyClass item) { item.Count++; });