Sdílet prostřednictvím


Expression.Switch Metoda

Definice

Vytvoří , SwitchExpression který představuje switch příkaz.

Přetížení

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

Vytvoří , SwitchExpression který představuje switch příkaz, který má výchozí velikost písmen.

Switch(Expression, SwitchCase[])

Vytvoří, SwitchExpression který představuje switch příkaz bez výchozího případu.

Switch(Expression, Expression, SwitchCase[])

Vytvoří , SwitchExpression který představuje switch příkaz, který má výchozí velikost písmen.

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

Vytvoří , SwitchExpression který představuje switch příkaz, který má výchozí velikost písmen.

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

Vytvoří , SwitchExpression který představuje switch příkaz, který má výchozí velikost písmen.

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

Vytvoří , SwitchExpression který představuje switch příkaz, který má výchozí velikost písmen.

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

Zdroj:
SwitchExpression.cs
Zdroj:
SwitchExpression.cs
Zdroj:
SwitchExpression.cs

Vytvoří , SwitchExpression který představuje switch příkaz, který má výchozí velikost písmen.

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

Parametry

type
Type

Typ výsledku přepínače.

switchValue
Expression

Hodnota, která se má testovat pro každý případ.

defaultBody
Expression

Výsledek přepínače, pokud switchValue neodpovídá žádnému z případů.

comparison
MethodInfo

Metoda porovnání rovnosti, která se má použít.

cases
SwitchCase[]

Sada případů pro tento výraz přepínače.

Návraty

Vytvořený SwitchExpressionobjekt

Platí pro

Switch(Expression, SwitchCase[])

Zdroj:
SwitchExpression.cs
Zdroj:
SwitchExpression.cs
Zdroj:
SwitchExpression.cs

Vytvoří, SwitchExpression který představuje switch příkaz bez výchozího případu.

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

Parametry

switchValue
Expression

Hodnota, která se má testovat pro každý případ.

cases
SwitchCase[]

Sada případů pro tento výraz přepínače.

Návraty

Vytvořený SwitchExpressionobjekt

Příklady

Následující příklad ukazuje, jak vytvořit výraz, který představuje příkaz switch bez výchozího případu.

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

Poznámky

Všechny SwitchCase objekty v objektu SwitchExpression musí mít stejný typ, pokud SwitchExpression objekt nemá typ void.

Každý SwitchCase objekt má implicitní break příkaz, což znamená, že neexistuje žádný implicitní propad z jednoho popisku případu na druhý.

Pokud switchValue se neshoduje s žádným z případů, nevyvolá se žádná výjimka.

Platí pro

Switch(Expression, Expression, SwitchCase[])

Zdroj:
SwitchExpression.cs
Zdroj:
SwitchExpression.cs
Zdroj:
SwitchExpression.cs

Vytvoří , SwitchExpression který představuje switch příkaz, který má výchozí velikost písmen.

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

Parametry

switchValue
Expression

Hodnota, která se má testovat pro každý případ.

defaultBody
Expression

Výsledek přepínače, pokud switchValue neodpovídá žádnému z případů.

cases
SwitchCase[]

Sada případů pro tento výraz přepínače.

Návraty

Vytvořený SwitchExpressionobjekt

Příklady

Následující příklad ukazuje, jak vytvořit výraz, který představuje příkaz switch s výchozími písmeny.

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

Poznámky

Všechny SwitchCase objekty v objektu SwitchExpression musí mít stejný typ, pokud SwitchExpression objekt nemá typ void.

Každý SwitchCase objekt má implicitní break příkaz, což znamená, že neexistuje žádný implicitní propad z jednoho popisku případu na druhý.

Pokud switchValue neodpovídá žádnému z případů, spustí se výchozí případ reprezentovaný hodnotou defaultBody .

Platí pro

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

Zdroj:
SwitchExpression.cs
Zdroj:
SwitchExpression.cs
Zdroj:
SwitchExpression.cs

Vytvoří , SwitchExpression který představuje switch příkaz, který má výchozí velikost písmen.

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

Parametry

switchValue
Expression

Hodnota, která se má testovat pro každý případ.

defaultBody
Expression

Výsledek přepínače, pokud switchValue neodpovídá žádnému z případů.

comparison
MethodInfo

Metoda porovnání rovnosti, která se má použít.

cases
IEnumerable<SwitchCase>

Sada případů pro tento výraz přepínače.

Návraty

Vytvořený SwitchExpressionobjekt

Platí pro

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

Zdroj:
SwitchExpression.cs
Zdroj:
SwitchExpression.cs
Zdroj:
SwitchExpression.cs

Vytvoří , SwitchExpression který představuje switch příkaz, který má výchozí velikost písmen.

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

Parametry

switchValue
Expression

Hodnota, která se má testovat pro každý případ.

defaultBody
Expression

Výsledek přepínače, pokud switchValue neodpovídá žádnému z případů.

comparison
MethodInfo

Metoda porovnání rovnosti, která se má použít.

cases
SwitchCase[]

Sada případů pro tento výraz přepínače.

Návraty

Vytvořený SwitchExpressionobjekt

Platí pro

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

Zdroj:
SwitchExpression.cs
Zdroj:
SwitchExpression.cs
Zdroj:
SwitchExpression.cs

Vytvoří , SwitchExpression který představuje switch příkaz, který má výchozí velikost písmen.

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

Parametry

type
Type

Typ výsledku přepínače.

switchValue
Expression

Hodnota, která se má testovat pro každý případ.

defaultBody
Expression

Výsledek přepínače, pokud switchValue neodpovídá žádnému z případů.

comparison
MethodInfo

Metoda porovnání rovnosti, která se má použít.

cases
IEnumerable<SwitchCase>

Sada případů pro tento výraz přepínače.

Návraty

Vytvořený SwitchExpressionobjekt

Platí pro