分享方式:


Option Strict 為 On 時,不可進行 '<type1>' 至 '<type2>' 的隱含轉換

您嘗試在類型檢查參數 ( Long ) 設定為 Integer時,將某個類型轉換成另一個不能包含值的類型,例如將Long轉換成 On

這種轉換類型稱為 「縮小轉換」(narrowing conversion),可能會在執行階段失敗。 因此, Option Strict On 不允許隱含的縮小轉換。

錯誤 ID︰ BC30512

更正這個錯誤

  1. 判斷是否有從 <type1><type2>的任何類型轉換。 如果兩者都是 Visual Basic 基礎型別,或兩者都是類別的執行個體,則您通常可以參閱 放大和縮小轉換中的表格來判斷。

  2. 如果只有從 <type1><type2>的縮小轉換,您應該使用明確轉型。 如果轉換失敗,CType 函式DirectCast 運算子關鍵字會擲回執行階段例外狀況。 TryCast 運算子關鍵字只適用於參考型別,並在轉換失敗時傳回 Nothing

  3. 如果有縮小轉換,而且您的程式可以容許執行階段失敗,或您確定執行階段不可能失敗,您可以在原始程式碼開頭指定 Option Strict Off 。 不過,您仍須將轉換置於 Try...Catch...Finally 陳述式區塊中,以避免發生非預期的結果,或提早結束您的程式。

  4. 如果沒有從 <type1><type2>的轉換,您必須重新評估程式邏輯。 您或許可以撰寫程式碼,將值指派給對應至 <type2> 之預期值的 <type1>

  5. 如果沒有從 <type1><type2> 的轉換,而且其中一個類型是已定義的類別或結構,您或許可以定義轉換運算子,在該類型與其他類型之間進行轉換。 如需詳細資訊,請參閱 How to: Define a Conversion Operator

  6. 一般來說,在所有情況下,除非您可以攔截 Catch 區塊中的失敗並有效地加以處理,否則您應該避免使用縮小轉換。

另請參閱