Нет такого оператора, встроенного в C #.
Хотя я бы выбрал один из других ответов (тот, который использует Math.Max
, возможно, болееясно для приведенного примера), это здесь, чтобы показать другой метод.Жаль, что вычисления требуют явно типизированной переменной.
Func<int,int> computation = (x) => x > 5 ? x : 5;
var item = computation(aclass.amethod());
И in-line, что просто ужасно в C #.
var item = ((Func<int,int>)((x) => x > 5 ? x : 5))(aclass.amethod());
Конечно, оба вышеперечисленных действительносводиться к следующему:
var item = DoComputation(aclass.amethod());
И использовать тот факт, что C # не использует передачу по имени: -)
Или, возможно, метод расширения:
static class Ext {
public static TO Apply<TI,TO> (this TI obj, Func<TI,TO> fn) {
return fn(obj);
}
}
// note C# now lets us get away with no explicit Func<...> type
var item = Ext.Apply(aclass.amethod(), x => x > 5 ? x : 5);
// or as extension method -- imagine computation is as it was in the
// first example, or a compatible method group
var item = aclass.amethod().Apply(computation);
Удачного кодирования.