Expression.SwitchCase Methode

Definition

Erstellt ein SwitchCase Objekt, das in einem SwitchExpression Objekt verwendet werden soll.

Überlädt

Name Beschreibung
SwitchCase(Expression, Expression[])

Erstellt eine SwitchCase für die Verwendung in einer SwitchExpression.

SwitchCase(Expression, IEnumerable<Expression>)

Erstellt ein SwitchCase Objekt, das in einem SwitchExpression Objekt verwendet werden soll.

SwitchCase(Expression, Expression[])

Erstellt eine SwitchCase für die Verwendung in einer SwitchExpression.

public:
 static System::Linq::Expressions::SwitchCase ^ SwitchCase(System::Linq::Expressions::Expression ^ body, ... cli::array <System::Linq::Expressions::Expression ^> ^ testValues);
public static System.Linq.Expressions.SwitchCase SwitchCase(System.Linq.Expressions.Expression body, params System.Linq.Expressions.Expression[] testValues);
static member SwitchCase : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression[] -> System.Linq.Expressions.SwitchCase
Public Shared Function SwitchCase (body As Expression, ParamArray testValues As Expression()) As SwitchCase

Parameter

body
Expression

Der Textkörper des Falls.

testValues
Expression[]

Die Testwerte des Falls.

Gibt zurück

Die erstellte SwitchCase.

Gilt für:

SwitchCase(Expression, IEnumerable<Expression>)

Erstellt ein SwitchCase Objekt, das in einem SwitchExpression Objekt verwendet werden soll.

public:
 static System::Linq::Expressions::SwitchCase ^ SwitchCase(System::Linq::Expressions::Expression ^ body, System::Collections::Generic::IEnumerable<System::Linq::Expressions::Expression ^> ^ testValues);
public static System.Linq.Expressions.SwitchCase SwitchCase(System.Linq.Expressions.Expression body, System.Collections.Generic.IEnumerable<System.Linq.Expressions.Expression> testValues);
static member SwitchCase : System.Linq.Expressions.Expression * seq<System.Linq.Expressions.Expression> -> System.Linq.Expressions.SwitchCase
Public Shared Function SwitchCase (body As Expression, testValues As IEnumerable(Of Expression)) As SwitchCase

Parameter

body
Expression

Der Textkörper des Falls.

testValues
IEnumerable<Expression>

Die Testwerte des Falls.

Gibt zurück

Die erstellte SwitchCase.

Beispiele

Das folgende Beispiel veranschaulicht das Erstellen eines Ausdrucks, der eine Switch-Anweisung darstellt, die einen Standardfall aufweist.

// Add the following directive to the file:
// using System.Linq.Expressions;

// An expression that represents the switch value.
ConstantExpression switchValue = Expression.Constant(3);

// This expression represents a switch statement
// that has a default case.
SwitchExpression switchExpr =
    Expression.Switch(
        switchValue,
        Expression.Call(
                    null,
                    typeof(Console).GetMethod("WriteLine", new Type[] { typeof(String) }),
                    Expression.Constant("Default")
                ),
        new SwitchCase[] {
            Expression.SwitchCase(
                Expression.Call(
                    null,
                    typeof(Console).GetMethod("WriteLine", new Type[] { typeof(String) }),
                    Expression.Constant("First")
                ),
                Expression.Constant(1)
            ),
            Expression.SwitchCase(
                Expression.Call(
                    null,
                    typeof(Console).GetMethod("WriteLine", new Type[] { typeof(String) }),
                    Expression.Constant("Second")
                ),
                Expression.Constant(2)
            )
        }
    );

// The following statement first creates an expression tree,
// then compiles it, and then runs it.
Expression.Lambda<Action>(switchExpr).Compile()();

// This code example produces the following output:
//
// Default
' Add the following directive to the file:
' Imports System.Linq.Expressions

' An expression that represents the switch value.
Dim switchValue As ConstantExpression = Expression.Constant(3)

' This expression represents a switch statement 
' that has a default case.
Dim switchExpr As SwitchExpression =
Expression.Switch(
    switchValue,
    Expression.Call(
                Nothing,
                GetType(Console).GetMethod("WriteLine", New Type() {GetType(String)}),
                Expression.Constant("Default")
            ),
    New SwitchCase() {
        Expression.SwitchCase(
            Expression.Call(
                Nothing,
                GetType(Console).GetMethod("WriteLine", New Type() {GetType(String)}),
                Expression.Constant("First")
            ),
            Expression.Constant(1)
        ),
        Expression.SwitchCase(
            Expression.Call(
                Nothing,
                GetType(Console).GetMethod("WriteLine", New Type() {GetType(String)}),
                Expression.Constant("Second")
            ),
            Expression.Constant(2)
        )
    }
)

' The following statement first creates an expression tree,
' then compiles it, and then runs it.
Expression.Lambda(Of Action)(switchExpr).Compile()()

' This code example produces the following output:
'
' Default

Hinweise

Alle SwitchCase Objekte in einem SwitchExpression Objekt müssen denselben Typ aufweisen, es sei denn, der Typ hat den SwitchExpression Typ void.

Jedes SwitchCase Objekt verfügt über eine implizite break Anweisung, was bedeutet, dass es keinen impliziten Fall von einer Fallbezeichnung auf eine andere gibt.

Gilt für: