Документация для BinaryExpression
сама по себе полезна для ответа на эти вопросы.
Обратите внимание, что для этого метода существует три перегрузки:
MakeBinary(ExpressionType, Expression, Expression)
MakeBinary(ExpressionType, Expression, Expression, Boolean, MethodInfo)
MakeBinary(ExpressionType, Expression, Expression, Boolean, MethodInfo, LambdaExpression)
Тот, на кого вы ссылаетесь, является вторым из трех.
Поднятые операторы
Поднятый оператор позволяет использовать оператор с ненулевым типом также с эквивалентным обнуляемым эквивалентом.
Например:
int a = 1;
int b = 2;
int c = a + b
Здесьоператор +
определен для int, int
.
Но:
int? a = 1;
int? b = 2;
int? c = a + b
Здесь оператор +
не определен в языкеспецификация для int?, int?
, и поэтому компилятор «поднимает» оператор, позволяя ему работать в этом случае.
Итак, для вопроса a BinaryExpression
«Представляет выражение с бинарным оператором»;и если IsLiftedToNull
истинно, это будет «Представляет выражение, которое имеет двоичный оператор, допускающий значение NULL».
Метод
Вместо того, чтобы полагаться на предопределенный оператор,Здесь вы можете указать метод, который будет использоваться для двоичной операции.