SwitchExpression Klass

Definition

Representerar ett kontrolluttryck som hanterar flera val genom att skicka kontrollen till SwitchCase.

public ref class SwitchExpression sealed : System::Linq::Expressions::Expression
public sealed class SwitchExpression : System.Linq.Expressions.Expression
type SwitchExpression = class
    inherit Expression
Public NotInheritable Class SwitchExpression
Inherits Expression
Arv
SwitchExpression

Exempel

I följande exempel visas hur du skapar ett uttryck som representerar en switch-instruktion som har ett standardfall med hjälp Switch av metoden.

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

Egenskaper

Name Description
CanReduce

Anger att noden kan reduceras till en enklare nod. Om detta returnerar true kan Reduce() anropas för att skapa det reducerade formuläret.

(Ärvd från Expression)
Cases

Hämtar samlingen med SwitchCase objekt för växeln.

Comparison

Hämtar om någon likhetsjämförelsemetod.

DefaultBody

Hämtar testet för växeln.

NodeType

Returnerar nodtypen för det här uttrycket. Tilläggsnoder bör returneras Extension när den här metoden åsidosättas.

SwitchValue

Hämtar testet för växeln.

Type

Hämtar den statiska typen av uttryck som detta Expression representerar.

Metoder

Name Description
Accept(ExpressionVisitor)

Skickar till den specifika besöksmetoden för den här nodtypen. Anropar MethodCallExpressionVisitMethodCall(MethodCallExpression)till exempel .

(Ärvd från Expression)
Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
Reduce()

Reducerar den här noden till ett enklare uttryck. Om CanReduce returnerar true bör detta returnera ett giltigt uttryck. Den här metoden kan returnera en annan nod som måste minskas.

(Ärvd från Expression)
ReduceAndCheck()

Reducerar den här noden till ett enklare uttryck. Om CanReduce returnerar true bör detta returnera ett giltigt uttryck. Den här metoden kan returnera en annan nod som måste minskas.

(Ärvd från Expression)
ReduceExtensions()

Minskar uttrycket till en känd nodtyp (som inte är en tilläggsnod) eller returnerar bara uttrycket om det redan är en känd typ.

(Ärvd från Expression)
ToString()

Returnerar en textrepresentation av Expression.

(Ärvd från Expression)
Update(Expression, IEnumerable<SwitchCase>, Expression)

Skapar ett nytt uttryck som liknar det här, men som använder de angivna underordnade uttrycken. Om alla underordnade är likadana returneras det här uttrycket.

VisitChildren(ExpressionVisitor)

Minskar noden och anropar sedan besökarens ombud för det reducerade uttrycket. Metoden genererar ett undantag om noden inte är redukterbar.

(Ärvd från Expression)

Gäller för