C#: избитый forEach для IEnumerable
От: svmich Россия  
Дата: 20.09.12 12:47
Оценка:
Народ,

конечно ежу понятно, что понятнее

void someMethod()
{
    foreach(var item in new[] { item1, item2, item3 })
    {
        doSomething(item);
    }
}


чем пресловутое

void forEach<T>(Action<T> action, params T[] items)
{
    foreach(var item in items)
    {
        action(item);
    }
}

void someMethod()
{
    forEach(doSomething, item1, item2, item3);
}


но как можно было бы (пусть тоже не слишком наглядно) сделать всё в одном выражении, сохранив возможность выведения компилятором типа аргумента у метода doSomething, чтобы не указывать этот тип явно?

Т.е. избежать явного указания item_type и, по возможности, сохранить раннее связывание, по сравнению с таким способом:
void someMethod()
{
    new Action<item_type>(item => doSomething(item)).DynamicInvoke(item1, item2, item3);
}


Есть варианты?

21.09.12 11:17: Перенесено из '.NET'
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.