Ausdrücke in Visual Basic
Aktualisiert: November 2007
Dieses Thema gilt für folgende Anwendungsbereiche:
Edition |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
||||
Standard |
||||
Pro und Team |
Tabellenlegende:
Vorhanden |
|
Nicht vorhanden |
|
Befehl oder Befehle, die standardmäßig ausgeblendet sind. |
Die meisten in Visual Basic verfassten Ausdrücke werden von der verwalteten Ausdrucksauswertung akzeptiert. Im Direktfenster unterstützt die Ausdrucksauswertung nur einzeilige Anweisungen.
In den folgenden Abschnitten erhalten Sie neben spezifischen Informationen auch Erläuterungen zu einigen nicht unterstützten Ausdruckstypen:
Bezeichner und Typen
Funktionsauswertung
Operatoren
Nicht unterstützte Schlüsselwörter
Zeichenfolgen
Typumwandlungen
TypeOf-Operator
Objektvariablen mit systeminternen Typen
Eigenschaftenauswertung
WebMethods
Variablendeklarationen
Die Regeln für die automatische Erweiterung, mit denen der Inhalt eines Datentyps in aussagekräftiger Form angezeigt werden kann, werden in Visual Basic nicht unterstützt. Weitere Informationen finden Sie unter Anzeigen von Elementen eines benutzerdefinierten Datentyps.
Typumwandlungen
Einfache Typumwandlungen funktionieren im Debugger:
A = CStr(B)
Funktionsauswertung
Der Debugger unterstützt die Auswertung von Funktionen, einschließlich überladener Funktionen. Daher können Sie einen der folgenden Ausdrücke eingeben, um die korrekte Version der überladenen Funktion aufzurufen:
myFunction (param1)
myFunction (param1, param2)
Beim Auswerten einer Funktion im Debugger wird der Code dieser Funktion aufgerufen und ausgeführt. Wenn die Funktion Nebeneffekte aufweist (z. B. Zuweisen von Speicher oder Ändern des Werts einer globalen Variablen), wird durch das Auswerten der Funktion in einem Debugfenster der Status des Programms geändert, was zu unerwarteten Ergebnissen führen kann.
Wenn Sie in einer überladenen Funktion einen Haltepunkt festlegen, hängt dessen Position davon ab, wie Sie die Funktion angeben. Wenn Sie lediglich den Namen der Funktion angeben, legt der Debugger an jeder Überladung dieses Funktionsnamens einen Haltepunkt fest. Wenn Sie dagegen die vollständige Signatur angeben, d. h. Funktionsname und komplette Argumentliste, wird nur an der angegebenen Überladung ein Haltepunkt festgelegt.
Bezeichner und Typen
In Debuggerausdrücken können alle Bezeichner verwendet werden, die innerhalb des aktuellen Gültigkeitsbereichs sichtbar sind. Wenn der Debugger beispielsweise in der Magh-Funktion angehalten wird, können Sie die meisten der innerhalb von Magh sichtbaren Bezeichner verwenden (hierzu zählen auch Variablennamen und Funktionsnamen). Lokale Konstanten werden nicht unterstützt. Sie können den Wert jeder innerhalb des aktuellen Gültigkeitsbereichs sichtbaren Variablen festlegen.
Der Debugger kann jede Variable primitiven oder systeminternen Typs ordnungsgemäß anzeigen. Bei Klassentypvariablen zeigt der Debugger den Wert für den in der Ableitungshierarchie ganz unten stehenden Typ ordnungsgemäß an. Angenommen, es gibt ein Objekt leo vom Typ Lion, der vom Typ Cat abgeleitet ist. Bei Auswertung von leo.Clawlength würden Sie in diesem Fall den korrekten Wert für ein Objekt vom Typ Lion erhalten.
Importaliase
Importaliase können im Debuggerfenster nicht verwendet werden.
Objektvariablen mit systeminternen Typen
Objektvariablen, die systeminterne Variablentypen enthalten, beispielsweise ganze Zahlen, werden in einer Art und Weise angezeigt und bearbeitet, die möglicherweise nicht besonders intuitiv erscheint. Z. B. könnte der Quellcode folgende Objektvariable enthalten:
Dim obj As Object = 5
Der Wert der Variablen obj wird im Fenster Überwachen angezeigt als:
5 {Integer}
Um den Wert dieser Variablen in 6 zu ändern, müssten Sie Folgendes eingeben:
6
Folgende Eingabe wäre jedoch falsch:
6 {Integer}
Nachdem Sie den Wert bearbeitet haben, werden Sie feststellen, dass der Debugger {Integer} für Sie hinzufügt.
Operatoren
Der Debugger wertet die meisten Operatoren ordnungsgemäß aus, z. B.:
Arithmetische Operatoren: ( expr1 + expr2, expr1 - expr2, expr1 * expr2, expr1 / expr2, expr1\expr2, expr1^expr2 , expr1Modexpr2 ).
Zuweisungsoperatoren: ( var1 = expr2, var1 ^= expr2, var1 *= expr2, var1 /= expr2, var1 \= expr2, var1 += expr2, var1 -= expr2, var1 &= expr2).
Vergleichsoperatoren: (expr2 < expr2, expr2 <= expr2, expr1 > expr2, expr1 >= expr2, expr1 = expr2, expr1 <> expr2).
Verkettungsoperatoren: (expr1 & expr2, expr1 + expr2).
Logische Operatoren: (expr1 And expr2, expr1 Or expr2, expr1 XOr expr2, expr1 AndAlso expr2, expr1 OrElse expr2, Notexpr1).
Unäre Operatoren: ( - expr1, Not expr1, GetType (type) ).
Eigenschaftenauswertung
Der Debugger kann in beliebigen Variablenfenstern Eigenschaften auswerten. Beim Auswerten von Eigenschaften im Debugger können jedoch Nebeneffekte, z. B. geänderte Variablenwerte, auftreten, die sich auf die Programmergebnisse auswirken. Sie können die Eigenschaftenauswertung im Dialogfeld Allgemein, Debuggen, Optionen deaktivieren, um eventuelle Nebeneffekte durch eine versehentliche Auswertung zu vermeiden.
Zeichenfolgen
In Visual Basic können Sie den Length-Operator für eine Zeichenfolge verwenden:
mystring.Length
– oder –
"hello world".Length
TypeOf-Operator
In Visual Basic können Sie in den Debuggerfenstern den TypeOf-Operator verwenden:
TypeOf expression Is type
Beispiel:
TypeOf Me Is Integer
zeigt den Wert false an.
Wenn Sie den Operator TypeOf verwenden, muss dieser Operator Teil eines Ausdrucks sein, der Is verwendet. Wenn Sie TypeOf ohne Is verwenden, wird die folgende Fehlermeldung angezeigt:
Is required
Nicht unterstützte Schlüsselwörter
Die folgenden Visual Basic-Schlüsselwörter werden in Ausdrücken des Debuggerfensters nicht unterstützt:
AddressOf
End
Error
Exit
Goto
On Error
Return
Resume
Select/Case
Stop
SyncLock
Throw
Try/Catch/Finally
With
Außerdem werden Schlüsselwörter der Namespace- oder Modulebene, wie End Sub oder Module, nicht unterstützt.
Variablendeklarationen
Neue Variablen können in Debuggerfenstern nicht explizit deklariert werden.
Zuweisungen zu einer impliziten Variablen sind im Direktfenster jedoch möglich. Diese impliziten Variablen sind auf den Bereich des Debuggers beschränkt; von außerhalb des Debuggers kann nicht darauf zugegriffen werden. Die Anweisung o = 5 beispielsweise erstellt eine neue Variable o und weist ihr den Wert 5 zu. Solche impliziten Variablen sind vom Typ Object, sofern der Typ nicht durch den Debugger abgeleitet werden kann.
WebMethods
WebMethods können nicht über ein Debuggerfenster aufgerufen werden.