Visual Basic の式
マネージ式エバリュエーターでは、Visual Basic で記述されたほとんどの式を評価できます。 [イミディエイト] ウィンドウの式エバリュエーターでは、単一行のステートメントしかサポートされません。
次に示すトピックでは、サポートされている式について詳細に説明します。サポートされていない式の種類または部分的にサポートされている式の種類についても説明します。
キャスト
動的オブジェクト
関数評価
識別子と型
インポート エイリアス
組み込みの型が含まれるオブジェクト変数
演算子
プロパティの評価
文字列
TypeOf 演算子
サポートされないキーワード
変数宣言
WebMethods
Visual Basic では、データ型の内容を意味のある形で表示するための自動展開規則がサポートされません。 詳細については、「独自のデータ型の要素の表示」を参照してください。
キャスト
デバッガーでは、次のような簡単なキャストを使用できます。
A = CStr(B)
動的オブジェクト
式エバリュエーターは、動的として静的に型指定された変数を評価できます。 さらに、IDynamicObject インターフェイスを実装するオブジェクトも評価できます。 IDynamicObject インターフェイスを実装するオブジェクトがウォッチ ウィンドウで評価されると、[動的ビュー] ノードが追加されます。 [動的ビュー] ノードにはオブジェクトのメンバーが表示されますが、そのメンバーの値を編集することはできません。
動的オブジェクトでは、以下の機能はサポートされていません。
複合演算子 +=、-=、%=、/=、および *=
多数のキャスト (数値キャスト、型引数キャストなど)
3 つ以上の引数を指定したメソッド呼び出し
3 つ以上の引数を指定したプロパティの getter
引数を指定したプロパティの setter
インデクサーへの割り当て
ブール演算子 && および ||
関数評価
デバッガーは、オーバーロードされた関数も含め、関数の評価をサポートしています。 したがって、次のいずれかの式を入力すると、オーバーロードされた関数の中から正しい関数が呼び出されます。
myFunction (param1)
myFunction (param1, param2)
デバッガーは、関数を評価するときに、その関数のコードを呼び出して実行します。 その関数がメモリの割り当てやグローバル変数値の変更などの処理を伴う場合は、デバッガー ウィンドウで関数を評価すると、プログラムの状態が変化して、予測不可能な結果が生じる可能性があります。
オーバーロードされた関数にブレークポイントを設定する場合、ブレークポイントの位置は関数の指定方法によって変わります。 関数名だけを指定した場合は、その関数名のオーバーロードごとに 1 つのブレークポイントが設定されます。 シグネチャ全体、関数名、およびすべての引数のリストを指定した場合は、指定されたオーバーロードに 1 つのブレークポイントが設定されます。
識別子と型
デバッガー式には、現在のスコープで参照できるどの識別子でも使用できます。 たとえば、デバッガーが Magh 関数で停止した場合は、変数名や関数名も含めて Magh で参照できるほとんどの識別子を使用できます。 ローカル定数はサポートされません。 また、現在のスコープで参照できるどの変数の値でも設定できます。
デバッガーでは、プリミティブ型または組み込みの型のどの変数でも正しく表示できます。 クラス型の変数については、最派生型に基づいた値を正しく表示できます。 Cat 型から派生した Lion 型の leo オブジェクトがある場合、leo.Clawlength を評価し、Lion 型のオブジェクトの正しい値を取得できます。
インポート エイリアス
デバッガー ウィンドウでは、インポート エイリアスを使用できません。
組み込みの型が含まれるオブジェクト変数
整数などの組み込みの変数型が含まれるオブジェクト変数を表示および編集する方法は、直観的ではありません。 たとえば、ソース コードに次のようなオブジェクト変数があるとします。
Dim obj As Object = 5
ウォッチ ウィンドウに変数 obj の値が表示されます。
5 {Integer}
この変数の値を 6 に変更するには、次のように入力します。
6
次のようには入力しません。
6 {Integer}
値を編集すると、{Integer} が自動的に追加されます。
演算子
デバッガーは、次の演算子を含む大部分の演算子を正しく評価します。
算術演算子: (expr1+ expr2、expr1- expr2、expr1* expr2、expr1/ expr2、expr1\expr2、expr1^expr2、expr1Modexpr2)。
代入演算子: (var1= expr2、var1^= expr2、var1*= expr2、var1/= expr2、var1\= expr2、var1+= expr2、var1-= expr2、var1&= expr2)。
比較演算子: (expr2< expr2、expr2<= expr2、expr1> expr2、expr1>= expr2、expr1= expr2、expr1<> expr2)。
連結演算子: (expr1& expr2、expr1+ expr2)。
論理演算子: (expr1And expr2、expr1Or expr2、expr1XOr expr2、expr1AndAlso expr2、expr1OrElse expr2、Notexpr1)。
単項演算子: (- expr1、Not expr1、GetType (type))。
プロパティの評価
デバッガーは、どの変数ウィンドウでもプロパティを評価できます。 ただし、デバッガーでプロパティを評価すると、変数値が変更されるなどの副作用が発生する可能性があり、プログラムの結果に影響を与えます。 予定外の評価による副作用が発生しないようにするには、[全般] ([オプション] ダイアログ ボックス - [デバッグ]) でプロパティ評価をオフにします。
文字列
Visual Basic では、文字列に対して Length 演算子を使用できます。
mystring.Length
または
"hello world".Length
TypeOf 演算子
Visual Basic では、デバッガー ウィンドウで TypeOf 演算子を使用できます。
TypeOf expression Is type
次に例を示します。
TypeOf Me Is Integer
値 false を表示します。
TypeOf は、Is を含む式の一部として使用してください。 Is がない式で TypeOf を使用すると、次のエラー メッセージが表示されます。
Is required
サポートされないキーワード
次の Visual Basic キーワードは、デバッガー ウィンドウ式でサポートされていません。
AddressOf
End
Error
Exit
Goto
On Error
Return
Resume
Select/Case
Stop
SyncLock
Throw
Try/Catch/Finally
With
また、End Sub や Module など、名前空間またはモジュール レベルのキーワードもサポートされません。
変数宣言
デバッガー ウィンドウでは、明示的に新しい変数を宣言できません。
ただし、[イミディエイト] ウィンドウで暗黙的な変数に割り当てることはできます。 このように暗黙的な変数のスコープは、デバッガー内に制限されるため、デバッガーの外部ではアクセスできません。 たさえば、ステートメント o = 5 によって、新しい変数 o が暗黙的に作成され、値 5 が割り当てられます。 このように暗黙的な変数は、デバッガーで型を推測できなければ、型 Object になります。
WebMethods
デバッガー ウィンドウで WebMethods を呼び出すことはできません。