Expression.OrElse Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Erstellt ein BinaryExpression, das eine bedingte OR
-Operation darstellt, bei dem der zweite Operand nur ausgewertet wird, wenn der erste Operator zu false
ausgewertet wird.
Überlädt
OrElse(Expression, Expression) |
Erstellt eine BinaryExpression, die einen bedingten |
OrElse(Expression, Expression, MethodInfo) |
Erstellt eine BinaryExpression, die einen bedingten |
OrElse(Expression, Expression)
- Quelle:
- BinaryExpression.cs
- Quelle:
- BinaryExpression.cs
- Quelle:
- BinaryExpression.cs
Erstellt eine BinaryExpression, die einen bedingten OR
-Vorgang darstellt, bei dem der zweite Operand nur ausgewertet wird, wenn der erste Operand als false
ausgewertet wird.
public:
static System::Linq::Expressions::BinaryExpression ^ OrElse(System::Linq::Expressions::Expression ^ left, System::Linq::Expressions::Expression ^ right);
public static System.Linq.Expressions.BinaryExpression OrElse (System.Linq.Expressions.Expression left, System.Linq.Expressions.Expression right);
static member OrElse : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression -> System.Linq.Expressions.BinaryExpression
Public Shared Function OrElse (left As Expression, right As Expression) As BinaryExpression
Parameter
- left
- Expression
Ein Expression, auf den die Left-Eigenschaft festgelegt werden soll.
- right
- Expression
Ein Expression, auf den die Right-Eigenschaft festgelegt werden soll.
Gibt zurück
Ein BinaryExpression, bei dem die NodeType-Eigenschaft gleich OrElse ist und die Left-Eigenschaft sowie die Right-Eigenschaft auf die angegebenen Werte festgelegt sind.
Ausnahmen
left
oder right
ist null
.
Der bitweise OR
-Operator ist für left
.Type und right
.Type nicht definiert.
- oder -
left
.Type und right
.Type weisen nicht denselben booleschen Typ auf.
Beispiele
Das folgende Codebeispiel zeigt, wie ein Ausdruck erstellt wird, der einen logischen OR
Vorgang darstellt, der den zweiten Operanden nur auswertet, wenn der erste Operand in false
ausgewertet wird.
// Add the following directive to your file:
// using System.Linq.Expressions;
// This expression perfroms a logical OR operation
// on its two arguments, but if the first argument is true,
// then the second arument is not evaluated.
// Both arguments must be of the boolean type.
Expression orElseExpr = Expression.OrElse(
Expression.Constant(false),
Expression.Constant(true)
);
// Print out the expression.
Console.WriteLine(orElseExpr.ToString());
// The following statement first creates an expression tree,
// then compiles it, and then executes it.
Console.WriteLine(Expression.Lambda<Func<bool>>(orElseExpr).Compile().Invoke());
// This code example produces the following output:
//
// (False OrElse True)
// True
' Add the following directive to your file:
' Imports System.Linq.Expressions
' This expression perfroms a logical OR operation
' on its two arguments, but if the first argument is true,
' the second arument is not evaluated.
' Both arguments must be of the Boolean type.
Dim orElseExpr As Expression = Expression.OrElse(
Expression.Constant(False),
Expression.Constant(True)
)
' Print the expression.
Console.WriteLine(orElseExpr.ToString())
' The following statement first creates an expression tree,
' then compiles it, and then executes it.
Console.WriteLine(Expression.Lambda(Of Func(Of Boolean))(orElseExpr).Compile()())
' This code example produces the following output:
'
' (False OrElse True)
' True
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 false
sie . 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
right
left
einen benutzerdefinierten Typ darstellt, der den bitweisenOR
Operator überlädt, ist die MethodInfo diese Methode die implementierende Methode.Hinweis
Der bedingte
OR
Operator kann in C# oder Visual Basic nicht überladen werden. Der bedingteOR
Operator wird jedoch mit dem bitweisenOR
Operator ausgewertet. Daher kann eine benutzerdefinierte Überladung des bitweisenOR
Operators die implementierende Methode für diesen Knotentyp sein.Andernfalls, wenn
left
. Geben Sie und einright
. Typ sind boolesche Typen, die implementierenden Methoden sindnull
.
Knotentyp und "Lifted" im Vergleich zu "Non-Lifted"
Wenn die implementierenden Methode nicht null
lautet:
Wenn
left
. Geben Sie und einright
. 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 einright
. 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 einright
. Typ sind der gleiche boolesche Typ.Wenn
left
. Geben Sie und einright
. Der Typ kann nicht null sein, der Knoten wird nicht aufgehoben. Der Typ des Knotens ist der Ergebnistyp des vordefinierten bedingtenOR
Operators.Wenn
left
. Geben Sie und einright
. Der Typ kann nullable sein, und der Knoten wird aufgehoben. Der Typ des Knotens ist der Nullable-Typ, der dem Ergebnistyp des vordefinierten bedingtenOR
Operators entspricht.
Gilt für:
OrElse(Expression, Expression, MethodInfo)
- Quelle:
- BinaryExpression.cs
- Quelle:
- BinaryExpression.cs
- Quelle:
- BinaryExpression.cs
Erstellt eine BinaryExpression, die einen bedingten OR
-Vorgang darstellt, bei dem der zweite Operand nur ausgewertet wird, wenn der erste Operand als false
ausgewertet wird.
public:
static System::Linq::Expressions::BinaryExpression ^ OrElse(System::Linq::Expressions::Expression ^ left, System::Linq::Expressions::Expression ^ right, System::Reflection::MethodInfo ^ method);
public static System.Linq.Expressions.BinaryExpression OrElse (System.Linq.Expressions.Expression left, System.Linq.Expressions.Expression right, System.Reflection.MethodInfo method);
public static System.Linq.Expressions.BinaryExpression OrElse (System.Linq.Expressions.Expression left, System.Linq.Expressions.Expression right, System.Reflection.MethodInfo? method);
static member OrElse : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression * System.Reflection.MethodInfo -> System.Linq.Expressions.BinaryExpression
Public Shared Function OrElse (left As Expression, right As Expression, method As MethodInfo) As BinaryExpression
Parameter
- left
- Expression
Ein Expression, auf den die Left-Eigenschaft festgelegt werden soll.
- right
- Expression
Ein Expression, auf den 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 OrElse 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 OR
-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 false
sie . 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
method
dies nichtnull
der Wert ist und eine nicht leere (Shared
in 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
right
left
einen benutzerdefinierten Typ dar, der den bitweisenOR
Operator überladen, die MethodInfo diese Methode darstellt, die implementierende Methode.Hinweis
Der bedingte
OR
Operator kann in C# oder Visual Basic nicht überladen werden. Der bedingteOR
Operator wird jedoch mit dem bitweisenOR
Operator ausgewertet. Daher kann eine benutzerdefinierte Überladung des bitweisenOR
Operators die implementierende Methode für diesen Knotentyp sein.Andernfalls, wenn
left
. Geben Sie und einright
. Typ sind boolesche Typen, die implementierenden Methoden sindnull
.
Knotentyp und "Lifted" im Vergleich zu "Non-Lifted"
Wenn die implementierenden Methode nicht null
lautet:
Wenn
left
. Geben Sie und einright
. 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 einright
. 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 einright
. Typ sind der gleiche boolesche Typ.Wenn
left
. Geben Sie und einright
. Der Typ kann nicht null sein, der Knoten wird nicht aufgehoben. Der Typ des Knotens ist der Ergebnistyp des vordefinierten bedingtenOR
Operators.Wenn
left
. Geben Sie und einright
. Der Typ kann nullable sein, und der Knoten wird aufgehoben. Der Typ des Knotens ist der Nullable-Typ, der dem Ergebnistyp des vordefinierten bedingtenOR
Operators entspricht.