Option Strict 為 On 時,不可進行 '<type1>' 至 '<type2>' 的隱含轉換
您嘗試在類型檢查參數 ( Long
) 設定為 Integer
時,將某個類型轉換成另一個不能包含值的類型,例如將Long轉換成 On
。
這種轉換類型稱為 「縮小轉換」(narrowing conversion),可能會在執行階段失敗。 因此, Option Strict On
不允許隱含的縮小轉換。
錯誤 ID︰ BC30512
判斷是否有從
<type1>
到<type2>
的任何類型轉換。 如果兩者都是 Visual Basic 基礎型別,或兩者都是類別的執行個體,則您通常可以參閱 放大和縮小轉換中的表格來判斷。如果只有從
<type1>
到<type2>
的縮小轉換,您應該使用明確轉型。 如果轉換失敗,CType 函式和 DirectCast 運算子關鍵字會擲回執行階段例外狀況。 TryCast 運算子關鍵字只適用於參考型別,並在轉換失敗時傳回 Nothing。如果有縮小轉換,而且您的程式可以容許執行階段失敗,或您確定執行階段不可能失敗,您可以在原始程式碼開頭指定
Option Strict Off
。 不過,您仍須將轉換置於 Try...Catch...Finally 陳述式區塊中,以避免發生非預期的結果,或提早結束您的程式。如果沒有從
<type1>
到<type2>
的轉換,您必須重新評估程式邏輯。 您或許可以撰寫程式碼,將值指派給對應至<type2>
之預期值的<type1>
。如果沒有從
<type1>
到<type2>
的轉換,而且其中一個類型是已定義的類別或結構,您或許可以定義轉換運算子,在該類型與其他類型之間進行轉換。 如需詳細資訊,請參閱 How to: Define a Conversion Operator。一般來說,在所有情況下,除非您可以攔截
Catch
區塊中的失敗並有效地加以處理,否則您應該避免使用縮小轉換。