Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die DebugView-Eigenschaft (nur beim Debuggen verfügbar) stellt ein Zeichenfolgenrendering von Ausdrucksstrukturen bereit. Die meisten Syntaxen sind recht einfach zu verstehen; die Sonderfälle werden in den folgenden Abschnitten beschrieben.
Jedes Beispiel folgt einem Blockkommentar, der die DebugView enthält.
ParameterExpression
ParameterExpression Variablennamen werden am Anfang mit einem $ Symbol angezeigt.
Wenn ein Parameter keinen Namen hat, wird ihm automatisch ein generierter Name wie $var1 oder $var2 zugewiesen.
ParameterExpression numParam = Expression.Parameter(typeof(int), "num");
/*
$num
*/
ParameterExpression numParam = Expression.Parameter(typeof(int));
/*
$var1
*/
ConstantExpression
Bei ConstantExpression Objekten, die ganze Zahlen, Zeichenfolgen und nullZeichenfolgen darstellen, wird der Wert der Konstanten angezeigt.
Bei numerischen Typen mit Standardsuffixen als C#-Literale wird das Suffix dem Wert hinzugefügt. In der folgenden Tabelle sind die Suffixe aufgeführt, die verschiedenen numerischen Typen zugeordnet sind.
| Typ | Schlüsselwort | Nachsilbe |
|---|---|---|
| System.UInt32 | U | |
| System.Int64 | lange | L |
| System.UInt64 | ulong | UL |
| System.Double | doppelt | D |
| System.Single | schweben | F |
| System.Decimal | dezimal | M |
int num = 10;
ConstantExpression expr = Expression.Constant(num);
/*
10
*/
double num = 10;
ConstantExpression expr = Expression.Constant(num);
/*
10D
*/
BlockExpression
Wenn sich der Typ eines BlockExpression Objekts vom Typ des letzten Ausdrucks im Block unterscheidet, wird der Typ in winkeln Klammern (< und >) angezeigt. Andernfalls wird der Objekttyp BlockExpression nicht angezeigt.
BlockExpression block = Expression.Block(Expression.Constant("test"));
/*
.Block() {
"test"
}
*/
BlockExpression block = Expression.Block(typeof(Object), Expression.Constant("test"));
/*
.Block<System.Object>() {
"test"
}
*/
LambdaExpression
LambdaExpression Objekte werden zusammen mit den Stellvertretungstypen angezeigt.
Wenn ein Lambda-Ausdruck keinen Namen hat, wird ihm ein automatisch generierter Name zugewiesen, wie z.B. #Lambda1 oder #Lambda2.
LambdaExpression lambda = Expression.Lambda<Func<int>>(Expression.Constant(1));
/*
.Lambda #Lambda1<System.Func'1[System.Int32]>() {
1
}
*/
LambdaExpression lambda = Expression.Lambda<Func<int>>(Expression.Constant(1), "SampleLambda", null);
/*
.Lambda #SampleLambda<System.Func'1[System.Int32]>() {
1
}
*/
LabelExpression
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 das Ziel an, zu dem gesprungen werden soll.
Wenn ein Etikett keinen Namen hat, wird ihm ein automatisch generierter Name zugewiesen, wie z. B. #Label1 oder #Label2.
LabelTarget target = Expression.Label(typeof(int), "SampleLabel");
BlockExpression block = Expression.Block(
Expression.Goto(target, Expression.Constant(0)),
Expression.Label(target, Expression.Constant(-1))
);
/*
.Block() {
.Goto SampleLabel { 0 };
.Label
-1
.LabelTarget SampleLabel:
}
*/
LabelTarget target = Expression.Label();
BlockExpression block = Expression.Block(
Expression.Goto(target),
Expression.Label(target)
);
/*
.Block() {
.Goto #Label1 { };
.Label
.LabelTarget #Label1:
}
*/
Überprüfte Operatoren
Markierte Operatoren werden mit dem # Symbol vor dem Operator angezeigt. Beispielsweise wird der geprüfte Additionsoperator als #+ angezeigt.
Expression expr = Expression.AddChecked( Expression.Constant(1), Expression.Constant(2));
/*
1 #+ 2
*/
Expression expr = Expression.ConvertChecked( Expression.Constant(10.0), typeof(int));
/*
#(System.Int32)10D
*/