Подскажите аналог mem_fun() из С++
От: Аноним  
Дата: 25.05.08 13:38
Оценка:
Есть задача вызывать определенную функцию на списке экземпляров класса. Есть ли возможность реализовать так же красиво как с помощью mem_fun в плюсах?
void process(IEnumerable<Task> tasks, ?Func? func)
{
    foreach (Task task in tasks)
        func(task);
}

process(myList, ?mem_fun?(Task.run));


Подскажите правильное решение?

з.ы. лямбда выражения вроде
x => x.run() + Action<Task>
— что-то не сильно красиво выглядят в данном случае %)
Re: Подскажите аналог mem_fun() из С++
От: Mab Россия http://shade.msu.ru/~mab
Дата: 25.05.08 13:46
Оценка:
Здравствуйте, Аноним, Вы писали:

А>з.ы. лямбда выражения вроде

А>
А>x => x.run() + Action<Task>
А>
— что-то не сильно красиво выглядят в данном случае %)

Нормально выглядит.
Re: Подскажите аналог mem_fun() из С++
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 25.05.08 14:39
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Подскажите правильное решение?


А>з.ы. лямбда выражения вроде

А>
А>x => x.run() + Action<Task>
А>
— что-то не сильно красиво выглядят в данном случае %)


Еще бы, это даже не скомпилируется. В твоей задаче будет так:
void Process(this IEnumerable<Task> tasks, Func<Task> func)
{
  foreach (var task in tasks)
    func(task);
}

myList.Process(task => task.Run());
... <<RSDN@Home 1.2.0 alpha 4 rev. 1090 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[2]: Подскажите аналог mem_fun() из С++
От: Аноним  
Дата: 25.05.08 14:53
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Еще бы, это даже не скомпилируется. В твоей задаче будет так:

если это был стёб — то не уместный
именно так как я написал все работает и компилируется — т.е. в связке Action<Task> и лямбда x => x.run()

сигнатура run — void run();
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.