Expression.AndAlso Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Создает выражение BinaryExpression, представляющее условную операцию AND
, вычисляющую второй операнд, только если первый операнд имеет значение true
.
Перегрузки
AndAlso(Expression, Expression, MethodInfo) |
Создает выражение BinaryExpression, представляющее условную операцию |
AndAlso(Expression, Expression) |
Создает выражение BinaryExpression, представляющее условную операцию |
AndAlso(Expression, Expression, MethodInfo)
- Исходный код:
- BinaryExpression.cs
- Исходный код:
- BinaryExpression.cs
- Исходный код:
- BinaryExpression.cs
Создает выражение BinaryExpression, представляющее условную операцию AND
, вычисляющую второй операнд, только если первый операнд имеет значение true. Может быть указан метод реализации.
public:
static System::Linq::Expressions::BinaryExpression ^ AndAlso(System::Linq::Expressions::Expression ^ left, System::Linq::Expressions::Expression ^ right, System::Reflection::MethodInfo ^ method);
public static System.Linq.Expressions.BinaryExpression AndAlso (System.Linq.Expressions.Expression left, System.Linq.Expressions.Expression right, System.Reflection.MethodInfo method);
public static System.Linq.Expressions.BinaryExpression AndAlso (System.Linq.Expressions.Expression left, System.Linq.Expressions.Expression right, System.Reflection.MethodInfo? method);
static member AndAlso : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression * System.Reflection.MethodInfo -> System.Linq.Expressions.BinaryExpression
Public Shared Function AndAlso (left As Expression, right As Expression, method As MethodInfo) As BinaryExpression
Параметры
- left
- Expression
Объект Expression, который следует задать в качестве значения свойства Left.
- right
- Expression
Объект Expression, который следует задать в качестве значения свойства Right.
- method
- MethodInfo
Объект MethodInfo, который следует задать в качестве значения свойства Method.
Возвращаемое значение
Выражение BinaryExpression со свойством NodeType, равным AndAlso, и свойствами Left, Right и Method, для которых заданы указанные значения.
Исключения
Параметр left
или right
имеет значение null
.
method
не имеет значение null
, и метод, который он представляет, возвращает void
, а не static
(Shared
в Visual Basic), или не принимает ровно два аргумента.
method
имеет значение null
, и оператор битовой операции AND
не определен для left
.Type и right
.Type.
-или-
Метод method
равен null
, а типы left
.Type и right
.Type отличаются от логического типа.
Комментарии
Результирующее BinaryExpression свойство имеет Method значение реализующий метод. Свойству Type присваивается тип узла. Если узел приподнят, IsLifted свойства и IsLiftedToNull имеют значение true
. В противном случае они имеют значение false
. Значение свойства Conversion — null
.
В следующих сведениях описывается реализующий метод, тип узла и возможность подъема узла.
Метод реализации
Метод реализации для операции выбирается на основе следующих правил:
Если
method
не являетсяnull
и представляет метод non-void (static
Shared
в Visual Basic), который принимает два аргумента, это реализующий метод для узла.В противном случае, если Type свойство или
left
right
представляет определяемый пользователем тип, который перегружает побитовыйAND
оператор, объект , MethodInfo представляющий этот метод, является методом реализации.Примечание
AND
Условный оператор нельзя перегружать в C# или Visual Basic. Однако условныйAND
оператор вычисляется с помощью побитовогоAND
оператора. Таким образом, определяемая пользователем перегрузка битовогоAND
оператора может быть методом реализации для этого типа узла.В противном случае , если
left
. Введите иright
. Типом являются логические типы, реализующим методом являетсяnull
.
Тип узла, а также тип невозвыводимый и невозвыводимый
Если реализующим методом не null
является :
Если
left
. Введите иright
. Тип можно назначить соответствующим типам аргументов реализующего метода, узел не поднимается. Тип узла является типом возвращаемого значения реализующего метода.Если выполняются следующие два условия, узел поднимается, а тип узла является типом, допускающим значение NULL, который соответствует типу возвращаемого значения реализующего метода:
left
. Введите иright
. Тип — это оба типа значений, из которых по крайней мере один допускает значение NULL, а соответствующие типы, не допускающие значения NULL, равны соответствующим типам аргументов реализующего метода.Тип возвращаемого значения реализующего метода является типом значения, не допускающим значение NULL.
Если реализующим методом является null
:
left
. Введите иright
. Тип совпадает с логическим типом.Если
left
. Введите иright
. Тип не допускает значения NULL, узел не поднимается. Тип узла — это тип результата предопределенного условногоAND
оператора.Если
left
. Введите иright
. Тип допускает значение NULL, узел поднимается. Тип узла — это тип, допускающий значение NULL, соответствующий типу результата предопределенного условногоAND
оператора.
Применяется к
AndAlso(Expression, Expression)
- Исходный код:
- BinaryExpression.cs
- Исходный код:
- BinaryExpression.cs
- Исходный код:
- BinaryExpression.cs
Создает выражение BinaryExpression, представляющее условную операцию AND
, вычисляющую второй операнд, только если первый операнд имеет значение true
.
public:
static System::Linq::Expressions::BinaryExpression ^ AndAlso(System::Linq::Expressions::Expression ^ left, System::Linq::Expressions::Expression ^ right);
public static System.Linq.Expressions.BinaryExpression AndAlso (System.Linq.Expressions.Expression left, System.Linq.Expressions.Expression right);
static member AndAlso : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression -> System.Linq.Expressions.BinaryExpression
Public Shared Function AndAlso (left As Expression, right As Expression) As BinaryExpression
Параметры
- left
- Expression
Объект Expression, который следует задать в качестве значения свойства Left.
- right
- Expression
Объект Expression, который следует задать в качестве значения свойства Right.
Возвращаемое значение
Выражение BinaryExpression со свойствомNodeType, равным AndAlso, и свойствами Left и Right, для которых заданы указанные значения.
Исключения
Параметр left
или right
имеет значение null
.
Битовый оператор AND
не определен для типов left
.Type и right
.Type.
-или-
Типы left
.Type и right
.Type отличаются от логического типа.
Примеры
В следующем примере кода показано, как создать выражение, выполняющее логическую операцию AND с двумя операндами только в том случае, если первый операнд имеет true
значение .
// Add the following directive to your file:
// using System.Linq.Expressions;
// This expression perfroms a logical AND operation
// on its two arguments, but if the first argument is false,
// then the second arument is not evaluated.
// Both arguments must be of the boolean type.
Expression andAlsoExpr = Expression.AndAlso(
Expression.Constant(false),
Expression.Constant(true)
);
// Print out the expression.
Console.WriteLine(andAlsoExpr.ToString());
// The following statement first creates an expression tree,
// then compiles it, and then executes it.
Console.WriteLine(Expression.Lambda<Func<bool>>(andAlsoExpr).Compile()());
// This code example produces the following output:
//
// (False AndAlso True)
// False
' Add the following directive to your file:
' Imports System.Linq.Expressions
' This expression performs a logical AND operation
' on its two arguments, but if the first argument is false,
' the second argument is not evaluated.
' Both arguments must be of the Boolean type.
Dim andAlsoExpr As Expression = Expression.AndAlso(
Expression.Constant(False),
Expression.Constant(True)
)
' Print the expression.
Console.WriteLine(andAlsoExpr.ToString())
' The following statement first creates an expression tree,
' then compiles it, and then executes it.
Console.WriteLine(Expression.Lambda(Of Func(Of Boolean))(andAlsoExpr).Compile()())
' This code example produces the following output:
'
' (False AndAlso True)
' False
Комментарии
Результирующее BinaryExpression свойство имеет Method значение реализующий метод. Свойству Type присваивается тип узла. Если узел приподнят, IsLifted свойства и IsLiftedToNull имеют значение true
. В противном случае они имеют значение false
. Значение свойства Conversion — null
.
В следующих сведениях описывается реализующий метод, тип узла и возможность подъема узла.
Метод реализации
Следующие правила определяют метод реализации операции:
Type Если свойство или
right
left
представляет определяемый пользователем тип, который перегружает побитовыйAND
оператор, то объект , MethodInfo представляющий этот метод, является реализующим методом.Примечание
AND
Условный оператор нельзя перегружать в C# или Visual Basic. Однако условныйAND
оператор вычисляется с помощью побитовогоAND
оператора. Таким образом, определяемая пользователем перегрузка битовогоAND
оператора может быть методом реализации для этого типа узла.В противном случае , если
left
. Введите иright
. Типом являются логические типы, реализующим методом являетсяnull
.
Тип узла, а также тип невозвыводимый и невозвыводимый
Если реализующим методом не null
является :
Если
left
. Введите иright
. Тип можно назначить соответствующим типам аргументов реализующего метода, узел не поднимается. Тип узла является типом возвращаемого значения реализующего метода.Если выполняются следующие два условия, узел поднимается, а тип узла является типом, допускающим значение NULL, который соответствует типу возвращаемого значения реализующего метода:
left
. Введите иright
. Тип — это оба типа значений, из которых по крайней мере один допускает значение NULL, а соответствующие типы, не допускающие значения NULL, равны соответствующим типам аргументов реализующего метода.Тип возвращаемого значения реализующего метода является типом значения, не допускающим значение NULL.
Если реализующим методом является null
:
left
. Введите иright
. Тип совпадает с логическим типом.Если
left
. Введите иright
. Тип не допускает значения NULL, узел не поднимается. Тип узла — это тип результата предопределенного условногоAND
оператора.Если
left
. Введите иright
. Тип допускает значение NULL, узел поднимается. Тип узла — это тип, допускающий значение NULL, соответствующий типу результата предопределенного условногоAND
оператора.