Freigeben über


Expression.Switch Methode

Definition

Erstellt eine SwitchExpression, die eine switch-Anweisung darstellt.

Überlädt

Switch(Type, Expression, Expression, MethodInfo, SwitchCase[])

Erstellt eine SwitchExpression, die eine switch-Anweisung mit einem Standardfall darstellt.

Switch(Expression, SwitchCase[])

Erstellt eine SwitchExpression, die eine switch-Anweisung ohne Standardfall darstellt.

Switch(Expression, Expression, SwitchCase[])

Erstellt eine SwitchExpression, die eine switch-Anweisung mit einem Standardfall darstellt.

Switch(Expression, Expression, MethodInfo, IEnumerable<SwitchCase>)

Erstellt eine SwitchExpression, die eine switch-Anweisung mit einem Standardfall darstellt.

Switch(Expression, Expression, MethodInfo, SwitchCase[])

Erstellt eine SwitchExpression, die eine switch-Anweisung mit einem Standardfall darstellt.

Switch(Type, Expression, Expression, MethodInfo, IEnumerable<SwitchCase>)

Erstellt eine SwitchExpression, die eine switch-Anweisung mit einem Standardfall darstellt.

Switch(Type, Expression, Expression, MethodInfo, SwitchCase[])

Quelle:
SwitchExpression.cs
Quelle:
SwitchExpression.cs
Quelle:
SwitchExpression.cs

Erstellt eine SwitchExpression, die eine switch-Anweisung mit einem Standardfall darstellt.

public:
 static System::Linq::Expressions::SwitchExpression ^ Switch(Type ^ type, System::Linq::Expressions::Expression ^ switchValue, System::Linq::Expressions::Expression ^ defaultBody, System::Reflection::MethodInfo ^ comparison, ... cli::array <System::Linq::Expressions::SwitchCase ^> ^ cases);
public static System.Linq.Expressions.SwitchExpression Switch (Type type, System.Linq.Expressions.Expression switchValue, System.Linq.Expressions.Expression defaultBody, System.Reflection.MethodInfo comparison, params System.Linq.Expressions.SwitchCase[] cases);
public static System.Linq.Expressions.SwitchExpression Switch (Type? type, System.Linq.Expressions.Expression switchValue, System.Linq.Expressions.Expression? defaultBody, System.Reflection.MethodInfo? comparison, params System.Linq.Expressions.SwitchCase[]? cases);
static member Switch : Type * System.Linq.Expressions.Expression * System.Linq.Expressions.Expression * System.Reflection.MethodInfo * System.Linq.Expressions.SwitchCase[] -> System.Linq.Expressions.SwitchExpression
Public Shared Function Switch (type As Type, switchValue As Expression, defaultBody As Expression, comparison As MethodInfo, ParamArray cases As SwitchCase()) As SwitchExpression

Parameter

type
Type

Der Ergebnistyp des Schalters.

switchValue
Expression

Der Wert, der für jeden Fall getestet werden soll.

defaultBody
Expression

Das Ergebnis des Schalters, wenn switchValue mit keinem der Fälle übereinstimmt.

comparison
MethodInfo

Die zu verwendende Methode für den Gleichheitsvergleich.

cases
SwitchCase[]

Der Satz von Fällen für diesen Schalterausdruck.

Gibt zurück

Der erstellte SwitchExpression.

Gilt für:

Switch(Expression, SwitchCase[])

Quelle:
SwitchExpression.cs
Quelle:
SwitchExpression.cs
Quelle:
SwitchExpression.cs

Erstellt eine SwitchExpression, die eine switch-Anweisung ohne Standardfall darstellt.

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

Parameter

switchValue
Expression

Der Wert, der für jeden Fall getestet werden soll.

cases
SwitchCase[]

Der Satz von Fällen für diesen Schalterausdruck.

Gibt zurück

Der erstellte SwitchExpression.

Beispiele

Im folgenden Beispiel wird veranschaulicht, wie Sie einen Ausdruck erstellen, der eine switch-Anweisung ohne Standardfall darstellt.

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

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

// This expression represents a switch statement
// without a default case.
SwitchExpression switchExpr =
    Expression.Switch(
        switchValue,
        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:
//
// Second
' Add the following directive to the file:
' Imports System.Linq.Expressions

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

' This expression represents a switch statement 
' without a default case.
Dim switchExpr As SwitchExpression =
Expression.Switch(
    switchValue,
    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:
'
' Second

Hinweise

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

Jedes SwitchCase Objekt verfügt über eine implizite break Anweisung, was bedeutet, dass es keinen impliziten Fall durch eine Fallbezeichnung zu einer anderen gibt.

Wenn switchValue keiner der Fälle übereinstimmt, wird keine Ausnahme ausgelöst.

Gilt für:

Switch(Expression, Expression, SwitchCase[])

Quelle:
SwitchExpression.cs
Quelle:
SwitchExpression.cs
Quelle:
SwitchExpression.cs

Erstellt eine SwitchExpression, die eine switch-Anweisung mit einem Standardfall darstellt.

public:
 static System::Linq::Expressions::SwitchExpression ^ Switch(System::Linq::Expressions::Expression ^ switchValue, System::Linq::Expressions::Expression ^ defaultBody, ... cli::array <System::Linq::Expressions::SwitchCase ^> ^ cases);
public static System.Linq.Expressions.SwitchExpression Switch (System.Linq.Expressions.Expression switchValue, System.Linq.Expressions.Expression defaultBody, params System.Linq.Expressions.SwitchCase[] cases);
public static System.Linq.Expressions.SwitchExpression Switch (System.Linq.Expressions.Expression switchValue, System.Linq.Expressions.Expression? defaultBody, params System.Linq.Expressions.SwitchCase[]? cases);
static member Switch : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression * System.Linq.Expressions.SwitchCase[] -> System.Linq.Expressions.SwitchExpression
Public Shared Function Switch (switchValue As Expression, defaultBody As Expression, ParamArray cases As SwitchCase()) As SwitchExpression

Parameter

switchValue
Expression

Der Wert, der für jeden Fall getestet werden soll.

defaultBody
Expression

Das Ergebnis des Schalters, wenn switchValue mit keinem der Fälle übereinstimmt.

cases
SwitchCase[]

Der Satz von Fällen für diesen Schalterausdruck.

Gibt zurück

Der erstellte SwitchExpression.

Beispiele

Im folgenden Beispiel wird veranschaulicht, wie Sie einen Ausdruck erstellen, der eine switch-Anweisung darstellt, die eine Standard-Groß-/Kleinschreibung 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 SwitchExpression hat den Typ void.

Jedes SwitchCase Objekt verfügt über eine implizite break Anweisung, was bedeutet, dass es keinen impliziten Fall durch eine Fallbezeichnung zu einer anderen gibt.

Wenn switchValue mit keinem der Fälle übereinstimmt, wird die Standard-Groß-/Kleinschreibung ausgeführt, die von defaultBody dargestellt wird.

Gilt für:

Switch(Expression, Expression, MethodInfo, IEnumerable<SwitchCase>)

Quelle:
SwitchExpression.cs
Quelle:
SwitchExpression.cs
Quelle:
SwitchExpression.cs

Erstellt eine SwitchExpression, die eine switch-Anweisung mit einem Standardfall darstellt.

public:
 static System::Linq::Expressions::SwitchExpression ^ Switch(System::Linq::Expressions::Expression ^ switchValue, System::Linq::Expressions::Expression ^ defaultBody, System::Reflection::MethodInfo ^ comparison, System::Collections::Generic::IEnumerable<System::Linq::Expressions::SwitchCase ^> ^ cases);
public static System.Linq.Expressions.SwitchExpression Switch (System.Linq.Expressions.Expression switchValue, System.Linq.Expressions.Expression defaultBody, System.Reflection.MethodInfo comparison, System.Collections.Generic.IEnumerable<System.Linq.Expressions.SwitchCase> cases);
public static System.Linq.Expressions.SwitchExpression Switch (System.Linq.Expressions.Expression switchValue, System.Linq.Expressions.Expression? defaultBody, System.Reflection.MethodInfo? comparison, System.Collections.Generic.IEnumerable<System.Linq.Expressions.SwitchCase>? cases);
static member Switch : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression * System.Reflection.MethodInfo * seq<System.Linq.Expressions.SwitchCase> -> System.Linq.Expressions.SwitchExpression
Public Shared Function Switch (switchValue As Expression, defaultBody As Expression, comparison As MethodInfo, cases As IEnumerable(Of SwitchCase)) As SwitchExpression

Parameter

switchValue
Expression

Der Wert, der für jeden Fall getestet werden soll.

defaultBody
Expression

Das Ergebnis des Schalters, wenn switchValue mit keinem der Fälle übereinstimmt.

comparison
MethodInfo

Die zu verwendende Methode für den Gleichheitsvergleich.

cases
IEnumerable<SwitchCase>

Der Satz von Fällen für diesen Schalterausdruck.

Gibt zurück

Der erstellte SwitchExpression.

Gilt für:

Switch(Expression, Expression, MethodInfo, SwitchCase[])

Quelle:
SwitchExpression.cs
Quelle:
SwitchExpression.cs
Quelle:
SwitchExpression.cs

Erstellt eine SwitchExpression, die eine switch-Anweisung mit einem Standardfall darstellt.

public:
 static System::Linq::Expressions::SwitchExpression ^ Switch(System::Linq::Expressions::Expression ^ switchValue, System::Linq::Expressions::Expression ^ defaultBody, System::Reflection::MethodInfo ^ comparison, ... cli::array <System::Linq::Expressions::SwitchCase ^> ^ cases);
public static System.Linq.Expressions.SwitchExpression Switch (System.Linq.Expressions.Expression switchValue, System.Linq.Expressions.Expression defaultBody, System.Reflection.MethodInfo comparison, params System.Linq.Expressions.SwitchCase[] cases);
public static System.Linq.Expressions.SwitchExpression Switch (System.Linq.Expressions.Expression switchValue, System.Linq.Expressions.Expression? defaultBody, System.Reflection.MethodInfo? comparison, params System.Linq.Expressions.SwitchCase[]? cases);
static member Switch : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression * System.Reflection.MethodInfo * System.Linq.Expressions.SwitchCase[] -> System.Linq.Expressions.SwitchExpression
Public Shared Function Switch (switchValue As Expression, defaultBody As Expression, comparison As MethodInfo, ParamArray cases As SwitchCase()) As SwitchExpression

Parameter

switchValue
Expression

Der Wert, der für jeden Fall getestet werden soll.

defaultBody
Expression

Das Ergebnis des Schalters, wenn switchValue mit keinem der Fälle übereinstimmt.

comparison
MethodInfo

Die zu verwendende Methode für den Gleichheitsvergleich.

cases
SwitchCase[]

Der Satz von Fällen für diesen Schalterausdruck.

Gibt zurück

Der erstellte SwitchExpression.

Gilt für:

Switch(Type, Expression, Expression, MethodInfo, IEnumerable<SwitchCase>)

Quelle:
SwitchExpression.cs
Quelle:
SwitchExpression.cs
Quelle:
SwitchExpression.cs

Erstellt eine SwitchExpression, die eine switch-Anweisung mit einem Standardfall darstellt.

public:
 static System::Linq::Expressions::SwitchExpression ^ Switch(Type ^ type, System::Linq::Expressions::Expression ^ switchValue, System::Linq::Expressions::Expression ^ defaultBody, System::Reflection::MethodInfo ^ comparison, System::Collections::Generic::IEnumerable<System::Linq::Expressions::SwitchCase ^> ^ cases);
public static System.Linq.Expressions.SwitchExpression Switch (Type type, System.Linq.Expressions.Expression switchValue, System.Linq.Expressions.Expression defaultBody, System.Reflection.MethodInfo comparison, System.Collections.Generic.IEnumerable<System.Linq.Expressions.SwitchCase> cases);
public static System.Linq.Expressions.SwitchExpression Switch (Type? type, System.Linq.Expressions.Expression switchValue, System.Linq.Expressions.Expression? defaultBody, System.Reflection.MethodInfo? comparison, System.Collections.Generic.IEnumerable<System.Linq.Expressions.SwitchCase>? cases);
static member Switch : Type * System.Linq.Expressions.Expression * System.Linq.Expressions.Expression * System.Reflection.MethodInfo * seq<System.Linq.Expressions.SwitchCase> -> System.Linq.Expressions.SwitchExpression
Public Shared Function Switch (type As Type, switchValue As Expression, defaultBody As Expression, comparison As MethodInfo, cases As IEnumerable(Of SwitchCase)) As SwitchExpression

Parameter

type
Type

Der Ergebnistyp des Schalters.

switchValue
Expression

Der Wert, der für jeden Fall getestet werden soll.

defaultBody
Expression

Das Ergebnis des Schalters, wenn switchValue mit keinem der Fälle übereinstimmt.

comparison
MethodInfo

Die zu verwendende Methode für den Gleichheitsvergleich.

cases
IEnumerable<SwitchCase>

Der Satz von Fällen für diesen Schalterausdruck.

Gibt zurück

Der erstellte SwitchExpression.

Gilt für: