Exportieren (0) Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Expression.OrElse-Methode (Expression, Expression)

Erstellt ein BinaryExpression, das eine bedingte OR-Operation darstellt, bei dem der zweite Operand nur ausgewertet wird, wenn der erste Operand zu false ausgewertet wird.

Namespace:  System.Linq.Expressions
Assembly:  System.Core (in System.Core.dll)

public static BinaryExpression OrElse(
	Expression left,
	Expression right
)

Parameter

left
Typ: System.Linq.Expressions.Expression
Ein Expression, auf den die Left-Eigenschaft festgelegt werden soll.
right
Typ: System.Linq.Expressions.Expression
Ein Expression, auf den die Right-Eigenschaft festgelegt werden soll.

Rückgabewert

Typ: System.Linq.Expressions.BinaryExpression
Ein BinaryExpression, bei dem die NodeType-Eigenschaft gleich OrElse ist und die Left-Eigenschaft sowie die Right-Eigenschaft auf die angegebenen Werte festgelegt sind.

AusnahmeBedingung
ArgumentNullException

left oder right ist null.

InvalidOperationException

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.

Bei der resultierenden BinaryExpression ist die Method-Eigenschaft auf die implementierende Methode festgelegt. Die Type-Eigenschaft ist auf den Typ des Knotens festgelegt. Wenn der Knoten transformiert ist, entspricht sowohl die IsLifted-Eigenschaft als auch die IsLiftedToNull-Eigenschaft true. Andernfalls entsprechen sie false. Die Conversion-Eigenschaft ist null.

In den folgenden Abschnitten werden die implementierende Methode und der Knotentyp beschrieben, und es wird angegeben, ob ein Knoten transformiert ist.

Bb353063.collapse_all(de-de,VS.110).gifImplementierende Methode

Die folgenden Regeln bestimmen die implementierende Methode für die Operation:

  • Wenn die Type-Eigenschaft von left oder right einen benutzerdefinierten Typ darstellt, der den bitweisen OR-Operator überlädt, handelt es sich bei der MethodInfo, die diese Methode darstellt, um die implementierende Methode.

    HinweisHinweis

    Der bedingte OR-Operator kann in C# und in Visual Basic nicht überladen werden. Der bedingte OR-Operator wird jedoch unter Verwendung des bitweisen OR-Operators ausgewertet. Daher kann eine benutzerdefinierte Überladung des bitweisen OR-Operators die implementierende Methode für diesen Knotentyp sein.

  • Andernfalls gilt: Wenn left.Type und right.Type boolesche Typen sind, ist die implementierende Methode null.

Bb353063.collapse_all(de-de,VS.110).gifKnotentyp, transformierte Knoten und nicht transformierte Knoten

Wenn die implementierende Methode nicht null ist, gilt Folgendes:

  • Wenn left.Type und right.Type den entsprechenden Argumenttypen der implementierenden Methode zugeordnet werden können, ist der Knoten nicht transformiert. Der Typ des Knotens ist der Rückgabetyp der implementierenden Methode.

  • Wenn die folgenden beiden Bedingungen erfüllt werden, ist der Knoten transformiert und weist einen Typ auf, der NULL-Werte zulässt und dem Rückgabetyp der implementierenden Methode entspricht:

    • Sowohl left.Type als auch right.Type sind Werttypen, von denen mindestens einer NULL-Werte zulässt, und die entsprechenden Typen, die keine NULL-Werte zulassen, sind gleich den entsprechenden Argumenttypen der implementierenden Methode.

    • Der Rückgabetyp der implementierenden Methode ist ein Werttyp, der keine NULL-Werte zulässt.

Wenn die implementierende Methode null ist, gilt Folgendes:

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

  • Wenn weder left.Type noch right.Type NULL-Werte zulassen, ist der Knoten nicht transformiert. Der Knotentyp entspricht dem Ergebnistyp des vordefinierten bedingten OR-Operators.

  • Wenn sowohl left.Type als auch right.Type NULL-Werte zulassen, ist der Knoten transformiert. Der Knoten weist einen Typ auf, der NULL-Werte zulässt und dem Ergebnistyp des vordefinierten bedingten Operators OR entspricht.

Im folgenden Codebeispiel wird gezeigt, wie ein Ausdruck erstellt wird, der eine logische OR-Operation ausführt, die den zweiten Operanden nur dann auswertet, wenn der erste Operand false ergibt.


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



.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in: Windows 8

.NET für Windows Phone-Apps

Unterstützt in: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2015 Microsoft