.NET VB データ型を厳密に取り扱う方法

最終更新日

VBでは、初期設定のままでは、データ型が異なる場合でも暗黙の型変換により自動的に変換されてしまうので、ビルド時にエラーで止めたかったのでその方法を記録しておく。

暗黙の型変換は、一見便利であるがシステム開発を行っているとトラブルが多い。特にマイグレーション(VB6.0→.NET化)やフレームワークの仕様変更など、様々な要因で型変換の仕様が変わる場合があり、意図しない挙動が起こり悩まされる。

また、システムの保守をしていると、他人が書いたコードをメンテナンスすることがある。その際、暗黙の型変換が行われていると、テストフェーズで意図しない挙動が発生したり、原因調査や修正に時間がかかることがある。

このように自動変換は便利である一方、デメリットもある。筆者の経験から言えば、データ型は厳密に扱ったほうが、トラブルは減ります。キャスト(型変換)の手間を勘案してもメリットがあります。

また、データ型を厳密に取り扱うことで、変数内部にどのような値がセットされているか想像しやすいため、コード分析しなければならない場面では有効的である。

ただ、個人作成のプログラムや開発から保守まで自分一人でやるという場合は、上記の限りではないとも思う。

Microsoft Visual Studio Community 2019

暗黙の型変換

intPrice(数値型の変数)+strPrice(文字列型の変数)で計算した場合、暗黙の型変換が行われ結果が350となるコード

Microsoft Visual Studio
結果

コードウィンドウに記述する方法

コードウィンドウに記述する方法解説

コードウィンドウの先頭(❶)の位置に「Option Strict On」を記述する。

Imports前に記述しないとエラーで怒ってくる。

Microsoft Visual Studio Community 2019では、コーディング中に暗黙の型変換が行われるとエラーを表示する(❷)

【サンプルコード】

Option Strict On

Imports System

Module Program
    Sub Main(args As String())

プロジェクト全体でデータ型を厳密に取り扱うようにする方法

メニューから「プロジェクト(P)」→「プロパティ(P)」をクリック。

コンパイルをクリック、Option Strictl(s)の設定をOffからOnに変更します。

※コンソールアプリでは、「ConsoleAppのプロパティ(P)」表記になる。

Option Strictl(s)をOFFからON
コンパイル

ポイント
コードウィンドウの先頭で「Option Strict On」を記述する必要はありません。

ビルドエラー

ビルドエラーが発生しました。続行して、最後に成功したビルドを実行しますか?」というメッセージが表示される。

エラー一覧


エラー BC30512 Option Strict On では ‘String’ から ‘Double’ への暗黙的な変換は許可されていません。