Это называется ternary operator
. Для получения дополнительной информации вот еще один вопрос, на который я ответил по этому поводу:
Сами лямбда-выражения существуют только в исходном коде. У них самих нет типа, поэтому компилятор всегда настаивает на их преобразовании в определенный тип.
Вот почему этот код не компилируется:
// No idea what type to convert to!
object x = y => y.Length;
Но это имеет:
Func<string, int> x = y => y.Length;
Лямбда-выражения являются всегда преобразуется в либо тип делегата , либо тип дерева выражения. Аналогичным образом анонимные методы всегда преобразуются в тип делегата.
Да , лямбда-выражения преобразуются либо в делегат
, либо в дерево выражений - оба являются объектами.
Лямбда-операции в Linq создают так называемые деревья выражений. Вы можете прочитать об этом здесь .
Это анонимная функция, которая должна соответствовать какому-то делегату. msdn Фактически, это экземпляры какого-то типа делегата.