Visual Basic 中的運算式

Managed 運算式評估工具可接受大部分以 Visual Basic 撰寫的運算式。 在 [即時運算] 視窗中,運算式評估工具僅支援單行陳述式。

下列章節提供特定的資訊,並討論一些不支援或僅部分支援的運算式類型:

  • Casts

  • Dynamic Objects

  • Function Evaluation

  • Identifiers and Types

  • Import Aliases

  • Object Variables Containing Intrinsic Types

  • Operators

  • PropertyEvaluation

  • Strings

  • TypeOf Operator

  • Unsupported Keywords

  • Variable Declarations

  • WebMethods

Visual Basic 並不支援以有意義的方式來顯示某資料型別內容的自動展開 (Autoexpand) 規則。 如需詳細資訊,請參閱顯示自訂資料型別項目

轉換

簡單轉型 (Cast) 可用於偵錯工具內:

A = CStr(B)

動態物件

運算式評估工具可以評估以靜態方式設為動態型別的變數。 它也可以評估實作 IDynamicObject 介面的物件。 在 [監看式] 視窗中評估實作 IDynamicObject 介面的物件時,會加入 [動態檢視] 節點。 [動態檢視] 節點會顯示物件成員,但不允許編輯成員的值。

不支援下列動態物件功能:

  • 複合運算子 +=、-=、%=、/= 和 *=

  • 許多轉型,包括數字轉型和型別引數轉型

  • 具兩個以上引數的方法呼叫

  • Getter 屬性具有兩個以上的引數

  • 具有引數的 Setter 屬性

  • 指派給索引子

  • 布林運算子 && and ||

函式評估

偵錯工具支援函式的評估,包括多載函式。 因此,您可以輸入下列任一運算式,偵錯工具將呼叫多載函式的正確版本:

myFunction (param1)

myFunction (param1, param2)

在偵錯工具呼叫中評估函式,並執行該函式的程式碼。 如果函式有副作用,例如配置記憶體或變更全域變數的值,在偵錯工具視窗中評估函式將會變更您的程式狀態,可能會產生非預期的結果。

當您在多載函式上設定一個中斷點時,中斷點的位置視您如何指定函式而定。 如果只有指定函式名稱,偵錯工具將在該函式名稱的每個多載上都設定一個中斷點。 如果指定完整簽章 (Signature)、函式名稱和完整引數清單,偵錯工具會在指定的多載上設定一個中斷點。

識別項和型別

偵錯工具運算式可以使用任何在目前範圍 (Scope) 中可見的識別項。 舉例來說,如果偵錯工具在 Magh 函式內中止,您就可以使用大部分在 Magh 中可見的識別項,包括變數名稱和函式名稱 (不支援區域常數)。 您可以設定目前範圍中任何可見之變數的值。

偵錯工具可以正確地顯示任何基本或內建 (Intrinsic) 型別的變數。 對於類別型別的變數,偵錯工具會根據衍生最徹底的型別來正確地顯示該值。 如果您有一個型別為 Lion 的物件 leo (衍生自 Cat 型別),您可以評估 leo.Clawlength,並取得型別為 Lion 之物件的正確值。

匯入別名

您無法在偵錯工具視窗內使用匯入別名功能。

包含內建型別的物件變數

包含內建變數型別 (例如整數) 的物件變數,會以反直覺式的方式來顯示與提供編輯。 例如,假設您的原始程式碼含有如下的物件變數:

Dim obj As Object = 5

[監看式] 視窗會將 obj 變數的值顯示為:

5 {Integer}

若要將此變數的值變更為 6,您可輸入:

6

您不能輸入:

6 {Integer}

在編輯過此值之後,您會注意到偵錯工具已經為您加入 {Integer}。

運算子

偵錯工具會正確地評估大部分的運算子,包括:

  • Arithmetical operators: ( expr1+ expr2, expr1- expr2, expr1* expr2, expr1/ expr2, expr1\expr2, expr1^expr2 , expr1Modexpr2 ).

  • 指派 (Assignment) 運算子:(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)。

  • Concatenation operators: (expr1& expr2, expr1+ expr2).

  • Logical operators: (expr1And expr2, expr1Or expr2, expr1XOr expr2, expr1AndAlso expr2, expr1OrElse expr2, Notexpr1).

  • 一元 (Unary) 運算子:( - 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

此外,也不支援任何命名空間 (Namespace) 或模組層級關鍵字,例如 End Sub 或 Module。

變數宣告

您不能在偵錯工具視窗中明確地宣告新的變數。

不過,您可以在 [即時運算] 視窗中指定值給隱含變數。 這些隱含變數的範圍限於偵錯工具,並且無法在偵錯工具之外加以存取。 例如,陳述式 o = 5 將會隱含地建立新變數 o,並將數值 5 指派給該變數。 除非型別能由偵錯工具所推斷,這種隱含變數都屬於 Object 型別。

WebMethod

您不能從偵錯工具視窗中呼叫 WebMethod。

請參閱

其他資源

偵錯工具中的運算式

Visual Basic 語言參考