Expression.Switch 方法

定義

建立表示 SwitchExpression 陳述式的 switch

多載

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

建立 SwitchExpression,其代表具有預設情況的 switch 陳述式。

Switch(Expression, SwitchCase[])

建立 SwitchExpression,代表不含 default case 的 switch 陳述式。

Switch(Expression, Expression, SwitchCase[])

建立 SwitchExpression,其代表具有預設情況的 switch 陳述式。

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

建立 SwitchExpression,其代表具有預設情況的 switch 陳述式。

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

建立 SwitchExpression,其代表具有預設情況的 switch 陳述式。

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

建立 SwitchExpression,其代表具有預設情況的 switch 陳述式。

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

來源:
SwitchExpression.cs
來源:
SwitchExpression.cs
來源:
SwitchExpression.cs

建立 SwitchExpression,其代表具有預設情況的 switch 陳述式。

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

參數

type
Type

參數的結果類型。

switchValue
Expression

針對每個案例所要測試的值。

defaultBody
Expression

如果 switchValue 不符合任何案例,則為參數結果。

comparison
MethodInfo

要使用的相等比較方法。

cases
SwitchCase[]

這個 switch 運算式的案例集合。

傳回

建立的 SwitchExpression

適用於

Switch(Expression, SwitchCase[])

來源:
SwitchExpression.cs
來源:
SwitchExpression.cs
來源:
SwitchExpression.cs

建立 SwitchExpression,代表不含 default case 的 switch 陳述式。

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

參數

switchValue
Expression

針對每個案例所要測試的值。

cases
SwitchCase[]

這個 switch 運算式的案例集合。

傳回

建立的 SwitchExpression

範例

下列範例示範如何建立運算式,代表沒有預設案例的 switch 語句。

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

備註

SwitchCase物件中的所有 SwitchExpression 物件都必須具有相同的類型,除非 SwitchExpression 具有 型 void 別 。

每個 SwitchCase 物件都有隱含語句,這表示沒有隱含 break 的落在某個案例標籤到另一個案例標籤。

如果 switchValue 不符合任何情況,則不會擲回任何例外狀況。

適用於

Switch(Expression, Expression, SwitchCase[])

來源:
SwitchExpression.cs
來源:
SwitchExpression.cs
來源:
SwitchExpression.cs

建立 SwitchExpression,其代表具有預設情況的 switch 陳述式。

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

參數

switchValue
Expression

針對每個案例所要測試的值。

defaultBody
Expression

如果 switchValue 不符合任何案例,則為參數結果。

cases
SwitchCase[]

這個 switch 運算式的案例集合。

傳回

建立的 SwitchExpression

範例

下列範例示範如何建立代表具有預設案例之 switch 語句的運算式。

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

備註

SwitchCase物件中的所有 SwitchExpression 物件都必須具有相同的類型,除非 SwitchExpression 具有 型 void 別 。

每個 SwitchCase 物件都有隱含語句,這表示沒有隱含 break 的落在某個案例標籤到另一個案例標籤。

如果 switchValue 不符合任何案例,則會執行 所 defaultBody 表示的預設案例。

適用於

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

來源:
SwitchExpression.cs
來源:
SwitchExpression.cs
來源:
SwitchExpression.cs

建立 SwitchExpression,其代表具有預設情況的 switch 陳述式。

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

參數

switchValue
Expression

針對每個案例所要測試的值。

defaultBody
Expression

如果 switchValue 不符合任何案例,則為參數結果。

comparison
MethodInfo

要使用的相等比較方法。

cases
IEnumerable<SwitchCase>

這個 switch 運算式的案例集合。

傳回

建立的 SwitchExpression

適用於

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

來源:
SwitchExpression.cs
來源:
SwitchExpression.cs
來源:
SwitchExpression.cs

建立 SwitchExpression,其代表具有預設情況的 switch 陳述式。

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

參數

switchValue
Expression

針對每個案例所要測試的值。

defaultBody
Expression

如果 switchValue 不符合任何案例,則為參數結果。

comparison
MethodInfo

要使用的相等比較方法。

cases
SwitchCase[]

這個 switch 運算式的案例集合。

傳回

建立的 SwitchExpression

適用於

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

來源:
SwitchExpression.cs
來源:
SwitchExpression.cs
來源:
SwitchExpression.cs

建立 SwitchExpression,其代表具有預設情況的 switch 陳述式。

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

參數

type
Type

參數的結果類型。

switchValue
Expression

針對每個案例所要測試的值。

defaultBody
Expression

如果 switchValue 不符合任何案例,則為參數結果。

comparison
MethodInfo

要使用的相等比較方法。

cases
IEnumerable<SwitchCase>

這個 switch 運算式的案例集合。

傳回

建立的 SwitchExpression

適用於