Freigeben über


Expression.AndAlso Methode

Definition

Erstellt eine BinaryExpression, die einen bedingten AND-Vorgang darstellt, bei dem der zweite Operand nur ausgewertet wird, wenn der erste Operand als true ausgewertet wird.

Überlädt

AndAlso(Expression, Expression, MethodInfo)

Erstellt eine BinaryExpression, die eine bedingte AND-Operation darstellt, bei der der zweite Operand nur ausgewertet wird, wenn der erste Operand zu TRUE aufgelöst wird. Die implementierende Methode kann angegeben werden.

AndAlso(Expression, Expression)

Erstellt eine BinaryExpression, die einen bedingten AND-Vorgang darstellt, bei dem der zweite Operand nur ausgewertet wird, wenn der erste Operand als true ausgewertet wird.

AndAlso(Expression, Expression, MethodInfo)

Quelle:
BinaryExpression.cs
Quelle:
BinaryExpression.cs
Quelle:
BinaryExpression.cs

Erstellt eine BinaryExpression, die eine bedingte AND-Operation darstellt, bei der der zweite Operand nur ausgewertet wird, wenn der erste Operand zu TRUE aufgelöst wird. Die implementierende Methode kann angegeben werden.

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

Parameter

left
Expression

Ein Expression, auf das die Left-Eigenschaft festgelegt werden soll.

right
Expression

Ein Expression, auf das die Right-Eigenschaft festgelegt werden soll.

method
MethodInfo

Ein MethodInfo, auf das die Method-Eigenschaft festgelegt werden soll.

Gibt zurück

Ein BinaryExpression, bei dem die NodeType-Eigenschaft gleich AndAlso ist und die Eigenschaften Left, Right und Method auf die angegebenen Werte festgelegt sind.

Ausnahmen

left oder right ist null.

method ist nicht null, und die dargestellte Methode gibt void zurück, ist nicht static (Shared in Visual Basic) oder akzeptiert nicht genau zwei Argumente.

method ist null, und der bitweise AND-Operator ist für left.Type und right.Type nicht definiert.

- oder -

method ist null, und left.Type sowie right.Type weisen nicht denselben booleschen Typ auf.

Hinweise

Das resultierende BinaryExpression hat die Method -Eigenschaft auf die implementierende Methode festgelegt. Die Type -Eigenschaft ist auf den Typ des Knotens festgelegt. Wenn der Knoten angehoben wird, sind die IsLifted Eigenschaften und IsLiftedToNull beide true. Andernfalls sind falsesie . Die Conversion-Eigenschaft ist null.

Die folgenden Informationen beschreiben die implementierenden Methode, den Knotentyp und ob ein Knoten aufgehoben wird.

Implementieren der Methode

Die Implementierungsmethode für den Vorgang wird basierend auf den folgenden Regeln ausgewählt:

  • Wenn method dies nicht null der Wert ist und eine nicht leere (Sharedin Visual Basic)-Methode darstellt, static die zwei Argumente akzeptiert, ist dies die implementierende Methode für den Knoten.

  • Andernfalls stellt die Type Eigenschaft von oder rightleft einen benutzerdefinierten Typ dar, der den bitweisen AND Operator überladen, die MethodInfo diese Methode darstellt, die implementierende Methode.

    Hinweis

    Der bedingte AND Operator kann in C# oder Visual Basic nicht überladen werden. Der bedingte AND Operator wird jedoch mit dem bitweisen AND Operator ausgewertet. Daher kann eine benutzerdefinierte Überladung des bitweisen AND Operators die implementierende Methode für diesen Knotentyp sein.

  • Andernfalls, wenn left. Geben Sie und ein right. Typ sind boolesche Typen, die implementierenden Methoden sind null.

Knotentyp und "Lifted" im Vergleich zu "Non-Lifted"

Wenn die implementierenden Methode nicht nulllautet:

  • Wenn left. Geben Sie und ein right. Typ können den entsprechenden Argumenttypen der implementierenden Methode zugewiesen werden, der Knoten wird nicht aufgehoben. Der Typ des Knotens ist der Rückgabetyp der implementierenden Methode.

  • Wenn die folgenden beiden Bedingungen erfüllt sind, wird der Knoten aufgehoben, und der Typ des Knotens ist der Nullable-Typ, der dem Rückgabetyp der implementierenden Methode entspricht:

    • left. Geben Sie und ein right. Typ sind beide Werttypen, von denen mindestens einer nullable ist, und die entsprechenden Nicht-Nullable-Typen sind gleich den entsprechenden Argumenttypen der implementierenden Methode.

    • Der Rückgabetyp der implementierenden Methode ist ein Werttyp, der nicht nullable ist.

Wenn die implementierenden Methode lautet null:

  • left. Geben Sie und ein right. Typ sind der gleiche boolesche Typ.

  • Wenn left. Geben Sie und ein right. Der Typ kann nicht null sein, der Knoten wird nicht aufgehoben. Der Typ des Knotens ist der Ergebnistyp des vordefinierten bedingten AND Operators.

  • Wenn left. Geben Sie und ein right. Der Typ kann nullable sein, und der Knoten wird aufgehoben. Der Typ des Knotens ist der Nullable-Typ, der dem Ergebnistyp des vordefinierten bedingten AND Operators entspricht.

Gilt für:

AndAlso(Expression, Expression)

Quelle:
BinaryExpression.cs
Quelle:
BinaryExpression.cs
Quelle:
BinaryExpression.cs

Erstellt eine BinaryExpression, die einen bedingten AND-Vorgang darstellt, bei dem der zweite Operand nur ausgewertet wird, wenn der erste Operand als true ausgewertet wird.

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

Parameter

left
Expression

Ein Expression, auf das die Left-Eigenschaft festgelegt werden soll.

right
Expression

Ein Expression, auf das die Right-Eigenschaft festgelegt werden soll.

Gibt zurück

Ein BinaryExpression, bei dem die NodeType-Eigenschaft gleich AndAlso ist und die Left-Eigenschaft sowie die Right-Eigenschaft auf die angegebenen Werte festgelegt sind.

Ausnahmen

left oder right ist null.

Der bitweise AND-Operator ist für left.Type und right.Type nicht definiert.

- oder -

left.Type und right.Type weisen nicht denselben booleschen Typ auf.

Beispiele

Im folgenden Codebeispiel wird gezeigt, wie ein Ausdruck erstellt wird, der einen logischen AND-Vorgang nur für die beiden Operanden ausführt, wenn der erste Operand mit trueausgewertet wird.

// 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

Hinweise

Das resultierende BinaryExpression hat die Method -Eigenschaft auf die implementierende Methode festgelegt. Die Type -Eigenschaft ist auf den Typ des Knotens festgelegt. Wenn der Knoten angehoben wird, sind die IsLifted Eigenschaften und IsLiftedToNull beide true. Andernfalls sind falsesie . Die Conversion-Eigenschaft ist null.

Die folgenden Informationen beschreiben die implementierenden Methode, den Knotentyp und ob ein Knoten aufgehoben wird.

Implementieren der Methode

Die folgenden Regeln bestimmen die Implementierungsmethode für den Vorgang:

  • Wenn die Type -Eigenschaft von oder rightleft einen benutzerdefinierten Typ darstellt, der den bitweisen AND Operator überlädt, ist die MethodInfo diese Methode die implementierende Methode.

    Hinweis

    Der bedingte AND Operator kann in C# oder Visual Basic nicht überladen werden. Der bedingte AND Operator wird jedoch mit dem bitweisen AND Operator ausgewertet. Daher kann eine benutzerdefinierte Überladung des bitweisen AND Operators die implementierende Methode für diesen Knotentyp sein.

  • Andernfalls, wenn left. Geben Sie und ein right. Typ sind boolesche Typen, die implementierenden Methoden sind null.

Knotentyp und "Lifted" im Vergleich zu "Non-Lifted"

Wenn die implementierenden Methode nicht nulllautet:

  • Wenn left. Geben Sie und ein right. Typ können den entsprechenden Argumenttypen der implementierenden Methode zugewiesen werden, der Knoten wird nicht aufgehoben. Der Typ des Knotens ist der Rückgabetyp der implementierenden Methode.

  • Wenn die folgenden beiden Bedingungen erfüllt sind, wird der Knoten aufgehoben, und der Typ des Knotens ist der Nullable-Typ, der dem Rückgabetyp der implementierenden Methode entspricht:

    • left. Geben Sie und ein right. Typ sind beide Werttypen, von denen mindestens einer nullable ist, und die entsprechenden Nicht-Nullable-Typen sind gleich den entsprechenden Argumenttypen der implementierenden Methode.

    • Der Rückgabetyp der implementierenden Methode ist ein Werttyp, der nicht nullable ist.

Wenn die implementierenden Methode lautet null:

  • left. Geben Sie und ein right. Typ sind der gleiche boolesche Typ.

  • Wenn left. Geben Sie und ein right. Der Typ kann nicht null sein, der Knoten wird nicht aufgehoben. Der Typ des Knotens ist der Ergebnistyp des vordefinierten bedingten AND Operators.

  • Wenn left. Geben Sie und ein right. Der Typ kann nullable sein, und der Knoten wird aufgehoben. Der Typ des Knotens ist der Nullable-Typ, der dem Ergebnistyp des vordefinierten bedingten AND Operators entspricht.

Gilt für: