В разное время во время программирования на С# я обнаружил себя в ситуациях, когда я хотел бы определить лямбда (или анонимный делегат) и вызвать его в той же строке. На данный момент "самый чистый" способ, которым я был в состоянии сделать это, выглядит следующим образом:
bool foo_equals_bar = new Func<String, bool>(str => str.Equals("foo"))("bar");
Мне бы хотелось, чтобы я мог написать что-то вроде следующего:
bool foo_equals_bar = (str => str.Equals("foo"))("bar");
К сожалению, это не работает. Я хотел бы знать:
- Есть ли более простой способ написания строки выше?
- Что возвращается из
(str => str.Equals("foo"))
, которое может быть использовано для инициализацииFunc<String, bool>
, но не может быть оценено какFunc<String, bool>
?
Я должен указать, что я работаю на С# 3 (VS2008), поэтому, если решение существует только в С# 4, укажите это. (Я бы все еще хотел знать, даже если решение не доступно мне в данный момент).
Спасибо