(0) exportieren Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Debuggen von Ausdrucksstrukturen (C# und Visual Basic)

Sie können die Struktur und den Inhalt von Ausdrucksbaumstrukturen analysieren, wenn Sie die Anwendungen debuggen. Sie können eine schnelle Übersicht über die Ausdrucksbaumstrukturstruktur mithilfe der DebugView-Eigenschaft erhalten, die nur im Debugmodus verfügbar ist. Weitere Informationen zum Debuggen finden Sie unter Debuggen in Visual Studio.

Die DebugView-Eigenschaft benutzt Visual Studio Schnellansichten für die bessere Darstellung des Inhaltes von Ausdrucksbaumstrukturen. Weitere Informationen finden Sie unter Schnellansichten.

So öffnen Sie eine Schnellansicht für eine Ausdrucksbaumstruktur

  1. Klicken Sie auf das Lupensymbol, das neben der DebugView-Eigenschaft einer Ausdrucksbaumstruktur in DataTips, einem Überwachungsfenster, dem Fenster Auto oder dem Lokalfenster angezeigt wird.

    Eine Liste von Schnellansichten wird angezeigt.

  2. Klicken Sie auf die gewünschte Schnellansicht.

Die folgenden Abschnitten beschrieben wie Ausdruckstypen in der Schnellansicht angezeigt werden.

ParameterExpression -Variablennamen werden am Anfang mit einem "$"-Symbol gekennzeichnet.

Wenn ein Parameter nicht über einen Namen verfügt, wird ihm ein automatisch generierter Name zugewiesen (z.B. $var1 oder $var2).

Ee725345.collapse_all(de-de,VS.120).gifBeispiele

Ausdruck

DebugView -Eigenschaft

Dim numParam As ParameterExpression = 
Expression.Parameter(GetType(Integer), "num")

$num

Dim numParam As ParameterExpression = 
Expression.Parameter(GetType(Integer))

$var1

Für ConstantExpression-Objekte, die ganzzahlige Werte, Zeichenfolgen und null darstellen, wird der Wert der Konstante angezeigt.

Für numerische Typen, die Standardsuffixe als C#-Literale besitzen, wird das Suffix dem Wert hinzugefügt. Die folgende Tabelle zeigt die verschiedenen numerischen Typen und ihre zugeordneten Suffixe.

Typ

Suffix

UInt32

U

Int64

L

UInt64

UL

Double

D

Single

F

Decimal

M

Ee725345.collapse_all(de-de,VS.120).gifBeispiele

Ausdruck

DebugView -Eigenschaft

int num = 10;
ConstantExpression expr = Expression.Constant(num);

Dim num as Integer= 10
Dim expr As ConstantExpression = Expression.Constant(num)

10

double num = 10;
ConstantExpression expr = Expression.Constant(num);

Dim num As Double = 10
Dim expr As ConstantExpression = Expression.Constant(num)

10D

Wenn sich der Typ eines BlockExpression-Objekts vom Typ des letzten Ausdrucks im Block unterscheidet, wird der Typ in der DebugInfo-Eigenschaft in spitzen Klammern (< und >) angezeigt. Andernfalls wird der Typ des BlockExpression-Objekts nicht angezeigt.

Ee725345.collapse_all(de-de,VS.120).gifBeispiele

Ausdruck

DebugView -Eigenschaft

Dim block As BlockExpression = Expression.Block(Expression.Constant("test"))

.Block() {

"test"

}

Dim block As BlockExpression = 
Expression.Block(GetType(Object), Expression.Constant("test"))

.Block<System.Object>() {

"test"

}

LambdaExpression -Objekte werden zusammen mit ihren Delegattypen angezeigt.

Wenn ein Lambda-Ausdruck über keinen Namen verfügt, wird ihm ein automatisch generierter Name zugewiesen (z.B. #Lambda1 oder #Lambda2).

Ee725345.collapse_all(de-de,VS.120).gifBeispiele

Ausdruck

DebugView -Eigenschaft

Dim lambda As LambdaExpression = 
Expression.Lambda(Of Func(Of Integer))(Expression.Constant(1))

.Lambda #Lambda1<System.Func'1[System.Int32]>() {

1

}

Dim lambda As LambdaExpression = 
Expression.Lambda(Of Func(Of Integer))(Expression.Constant(1), "SampleLamda", Nothing)

.Lambda SampleLambda<System.Func'1[System.Int32]>() {

1

}

Wenn Sie einen Standardwert für das LabelExpression-Objekt angeben, wird dieser Wert vor dem LabelTarget-Objekt angezeigt.

Das .Label-Token gibt den Anfang der Bezeichnung an. Das .LabelTarget-Token gibt den Zielort an, zu dem gewechselt werden soll.

Wenn eine Bezeichnung über keinen Namen verfügt, wird ihr ein automatisch generierter Name zugewiesen (z.B. #Label1 oder #Label2).

Ee725345.collapse_all(de-de,VS.120).gifBeispiele

Ausdruck

DebugView -Eigenschaft

Dim target As LabelTarget = Expression.Label(GetType(Integer), "SampleLabel")
Dim label1 As BlockExpression = Expression.Block(
Expression.Goto(target, Expression.Constant(0)),
Expression.Label(target, Expression.Constant(-1)))

.Block() {

.Goto SampleLabel { 0 };

.Label

-1

.LabelTarget SampleLabel:

}

Dim target As LabelTarget = Expression.Label()
Dim block As BlockExpression = Expression.Block(
Expression.Goto(target), Expression.Label(target))

.Block() {

.Goto #Label1 { };

.Label

.LabelTarget #Label1:

}

Überprüfte Operatoren werden mit dem Symbol "#" gekennzeichnet. Der überprüfte Additionsoperator wird z. B. als #+ angezeigt.

Ee725345.collapse_all(de-de,VS.120).gifBeispiele

Ausdruck

DebugView -Eigenschaft

Dim expr As Expression = Expression.AddChecked(
Expression.Constant(1), Expression.Constant(2))

1 #+ 2

Dim expr As Expression = Expression.ConvertChecked(
Expression.Constant(10.0), GetType(Integer))

#(System.Int32)10D

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft