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

更新 : 2007 年 11 月

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

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

Error ID: BC30512

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

  1. <type1> から <type2> へのような種類の変換が存在するかどうかを確認します。共に Visual Basic の要素型であるか、共にクラス インスタンスである場合、一般的に「拡大変換と縮小変換」の表を参照して判断できます。

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

  3. 縮小変換が存在し、実行時に失敗してもプログラムで対応可能な場合、または、実行時に失敗する可能性がないとわかっている場合は、ソース コードの先頭に Option Strict Off を指定できます。ただし、予期しない結果やプログラムの途中終了を回避するために、変換処理を Try...Catch...Finally ステートメント (Visual Basic) ブロックで囲む必要があります。

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

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

  6. すべての場合における一般的なガイドラインとしていうと、Catch ブロック内で失敗をトラップでき、失敗に有効に対処できるのでなければ、縮小変換の使用は避けてください。

参照

処理手順

方法 : 変換演算子を定義する

概念

拡大変換と縮小変換

参照

Option Strict ステートメント

CType 関数

DirectCast

TryCast

Nothing (Visual Basic)

Try...Catch...Finally ステートメント (Visual Basic)