Expression.OrElse Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee maakt u een BinaryExpression die een voorwaardelijke OR bewerking vertegenwoordigt die de tweede operand alleen evalueert als de eerste operator dat evalueert false.
Overloads
| Name | Description |
|---|---|
| OrElse(Expression, Expression) |
Hiermee maakt u een BinaryExpression die een voorwaardelijke |
| OrElse(Expression, Expression, MethodInfo) |
Hiermee maakt u een BinaryExpression die een voorwaardelijke |
OrElse(Expression, Expression)
Hiermee maakt u een BinaryExpression die een voorwaardelijke OR bewerking vertegenwoordigt die de tweede operand alleen evalueert als de eerste operand dat evalueert false.
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
Parameters
- left
- Expression
Een Expression om de Left eigenschap in te stellen die gelijk is aan.
- right
- Expression
Een Expression om de Right eigenschap in te stellen die gelijk is aan.
Retouren
Een BinaryExpression met de NodeType eigenschap gelijk aan OrElse en de Left eigenschappen die Right zijn ingesteld op de opgegeven waarden.
Uitzonderingen
left of right is null.
De bitsgewijze OR operator is niet gedefinieerd voor left. Typ en right. Type.
– of –
left. Typ en right. Het type is niet hetzelfde Booleaanse type.
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u een expressie maakt die een logische OR bewerking vertegenwoordigt die de tweede operand alleen evalueert als de eerste operand resulteert in false.
// 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
Opmerkingen
De resulterende BinaryExpression eigenschap is Method ingesteld op de implementatiemethode. De Type eigenschap is ingesteld op het type knooppunt. Als het knooppunt wordt opgeheven, zijn de IsLifted en IsLiftedToNull eigenschappen beide true. Anders zijn ze false. De eigenschap Conversion is null.
De volgende informatie beschrijft de implementatiemethode, het knooppunttype en of een knooppunt wordt opgeheven.
Implementatiemethode
De volgende regels bepalen de implementatiemethode voor de bewerking:
Als de Type eigenschap van een van
leftbeide ofrighteen door de gebruiker gedefinieerd type vertegenwoordigt dat de bitsgewijzeORoperator overbelast, is de MethodInfo methode die de implementatiemethode vertegenwoordigt.Note
De operator voor voorwaardelijk
ORkan niet worden overbelast in C# of Visual Basic. De voorwaardelijkeORoperator wordt echter geëvalueerd met behulp van de bitsgewijzeORoperator. Een door de gebruiker gedefinieerde overbelasting van de bitsgewijzeORoperator kan dus de implementatiemethode voor dit knooppunttype zijn.Anders, als
left. Typ enright. Type zijn Booleaanse typen, de implementatiemethode isnull.
Type knooppunt en opgeheven versus niet-opgeheven
Als de implementatiemethode niet null is:
Als
left.Type enright.Type kunnen worden toegewezen aan de bijbehorende argumenttypen van de implementatiemethode, dan wordt het knooppunt niet opgeheven. Het type van het knooppunt is het retourtype van de implementatiemethode.Als aan de volgende twee voorwaarden wordt voldaan, wordt het knooppunt opgeheven en is het type van het knooppunt het type null dat overeenkomt met het retourtype van de implementatiemethode:
left. Typ enright. Het type zijn beide waardetypen waarvan ten minste één null-waarde kan worden gebruikt en de bijbehorende niet-null-bare typen zijn gelijk aan de bijbehorende argumenttypen van de implementatiemethode.Het retourtype van de implementatiemethode is een niet-null-waardetype.
Als de implementatiemethode het volgende is null:
left. Typ enright. Het type is hetzelfde Booleaanse type.Als
left. Typ enright. Het type kan niet null zijn, het knooppunt wordt niet opgeheven. Het type van het knooppunt is het resultaattype van de vooraf gedefinieerde voorwaardelijkeORoperator.Als
left. Typ enright. Het type kan null worden, het knooppunt wordt opgeheven. Het type van het knooppunt is het null-type dat overeenkomt met het resultaattype van de vooraf gedefinieerde voorwaardelijkeORoperator.
Van toepassing op
OrElse(Expression, Expression, MethodInfo)
Hiermee maakt u een BinaryExpression die een voorwaardelijke OR bewerking vertegenwoordigt die de tweede operand alleen evalueert als de eerste operand dat evalueert false.
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
Parameters
- left
- Expression
Een Expression om de Left eigenschap in te stellen die gelijk is aan.
- right
- Expression
Een Expression om de Right eigenschap in te stellen die gelijk is aan.
- method
- MethodInfo
A MethodInfo om de Method eigenschap in te stellen die gelijk is aan.
Retouren
Een BinaryExpression met de NodeType eigenschap gelijk aan OrElse en de Left, Righten Method eigenschappen die zijn ingesteld op de opgegeven waarden.
Uitzonderingen
left of right is null.
method is niet null en de methode die deze vertegenwoordigt, retourneert void, is niet static (Shared in Visual Basic) of neemt niet precies twee argumenten.
method is null en de bitsgewijze OR operator is niet gedefinieerd voor left. Typ en right. Type.
– of –
method is null en left. Typ en right. Het type is niet hetzelfde Booleaanse type.
Opmerkingen
De resulterende BinaryExpression eigenschap is Method ingesteld op de implementatiemethode. De Type eigenschap is ingesteld op het type knooppunt. Als het knooppunt wordt opgeheven, zijn de IsLifted en IsLiftedToNull eigenschappen beide true. Anders zijn ze false. De eigenschap Conversion is null.
De volgende informatie beschrijft de implementatiemethode, het knooppunttype en of een knooppunt wordt opgeheven.
Implementatiemethode
De volgende regels bepalen de implementatiemethode voor de bewerking:
Als
methodniet isnullen deze een niet-ongeldigestatic(Sharedin Visual Basic) vertegenwoordigt, is dit de implementatiemethode voor het knooppunt.Als de eigenschap van een van beide of
righteen door de Type gebruiker gedefinieerd type vertegenwoordigt dat de bitsgewijzeORoperator overbelast, is de methode die MethodInfo de implementatiemethode vertegenwoordigt.leftNote
De operator voor voorwaardelijk
ORkan niet worden overbelast in C# of Visual Basic. De voorwaardelijkeORoperator wordt echter geëvalueerd met behulp van de bitsgewijzeORoperator. Een door de gebruiker gedefinieerde overbelasting van de bitsgewijzeORoperator kan dus de implementatiemethode voor dit knooppunttype zijn.Anders, als
left. Typ enright. Type zijn Booleaanse typen, de implementatiemethode isnull.
Type knooppunt en opgeheven versus niet-opgeheven
Als de implementatiemethode niet null is:
Als
left.Type enright.Type kunnen worden toegewezen aan de bijbehorende argumenttypen van de implementatiemethode, dan wordt het knooppunt niet opgeheven. Het type van het knooppunt is het retourtype van de implementatiemethode.Als aan de volgende twee voorwaarden wordt voldaan, wordt het knooppunt opgeheven en is het type van het knooppunt het type null dat overeenkomt met het retourtype van de implementatiemethode:
left. Typ enright. Het type zijn beide waardetypen waarvan ten minste één null-waarde kan worden gebruikt en de bijbehorende niet-null-bare typen zijn gelijk aan de bijbehorende argumenttypen van de implementatiemethode.Het retourtype van de implementatiemethode is een niet-null-waardetype.
Als de implementatiemethode het volgende is null:
left. Typ enright. Het type is hetzelfde Booleaanse type.Als
left. Typ enright. Het type kan niet null zijn, het knooppunt wordt niet opgeheven. Het type van het knooppunt is het resultaattype van de vooraf gedefinieerde voorwaardelijkeORoperator.Als
left. Typ enright. Het type kan null worden, het knooppunt wordt opgeheven. Het type van het knooppunt is het null-type dat overeenkomt met het resultaattype van de vooraf gedefinieerde voorwaardelijkeORoperator.