Option Strict On で '<type1>' から '<type2>' への暗黙の型変換はできません

Long から Integer への変換のように、値を格納できなくなる可能性がある別の型への型変換を行おうとしましたが、型チェック スイッチ (Option Strict ステートメント) は On に設定されています。

この種の変換は 縮小変換 と呼ばれ、実行時の失敗の原因になる場合があります。 このため、 Option Strict On では暗黙的な縮小変換が禁止されています。

エラー ID: BC30512

このエラーを解決するには

  1. <type1> から <type2>への何らかの型変換が存在するかどうかを判断します。 共に Visual Basic の基本型であるか、共にクラス インスタンスである場合は、「拡大変換と縮小変換」の表を参照することで、これを判断できます。

  2. <type1> から <type2>への縮小変換のみが存在する場合は、明示的なキャストを使用する必要があります。 変換に失敗した場合、CType Function キーワードと DirectCast Operator キーワードは実行時例外をスローします。 TryCast Operator キーワードは参照型のみに適用され、変換に失敗した場合はNothing を返します。

  3. 縮小変換が存在し、プログラムがランタイム エラーを許容できる場合、または、ランタイム エラーは発生しないと確信している場合は、ソース コードの先頭に Option Strict Off を指定できます。 それでも、予期しない結果や、プログラムの早期終了を避けるために、変換を Try...Catch...Finally ステートメント ブロックで囲む必要があります。

  4. <type1> から <type2>への変換が存在しない場合は、プログラム ロジックを再評価する必要があります。 予測される <type2> の値に対応して <type1>に値を代入するコードを記述できます。

  5. <type1> から <type2> への変換が存在せず、型の 1 つが自分で定義したクラスまたは構造体である場合は、一方の型から他方の型に、またはその逆に型を変換できる変換演算子を定義できます。 詳細については、「方法:変換演算子を定義する」を参照してください。

  6. 一般的なガイドラインとしては、 Catch ブロックでエラーをトラップして効率的に処理できるのでない限り、どのような場合であれ縮小変換は使用しないようにお勧めします。

関連項目