.NET VB データ型を厳密に取り扱う方法
VBでは、初期設定のままでは、データ型が異なる場合でも暗黙の型変換により自動的に変換されてしまうので、ビルド時にエラーで止めたかったのでその方法を記録しておく。
暗黙の型変換は、一見便利であるがシステム開発を行っているとトラブルが多い。特にマイグレーション(VB6.0→.NET化)やフレームワークの仕様変更など、様々な要因で型変換の仕様が変わる場合があり、意図しない挙動が起こり悩まされる。
また、システムの保守をしていると、他人が書いたコードをメンテナンスすることがある。その際、暗黙の型変換が行われていると、テストフェーズで意図しない挙動が発生したり、原因調査や修正に時間がかかることがある。
このように自動変換は便利である一方、デメリットもある。筆者の経験から言えば、データ型は厳密に扱ったほうが、トラブルは減ります。キャスト(型変換)の手間を勘案してもメリットがあります。
また、データ型を厳密に取り扱うことで、変数内部にどのような値がセットされているか想像しやすいため、コード分析しなければならない場面では有効的である。
ただ、個人作成のプログラムや開発から保守まで自分一人でやるという場合は、上記の限りではないとも思う。
Microsoft Visual Studio Community 2019
暗黙の型変換
intPrice(数値型の変数)+strPrice(文字列型の変数)で計算した場合、暗黙の型変換が行われ結果が350となるコード
コードウィンドウに記述する方法
コードウィンドウの先頭(❶)の位置に「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 Strict On」を記述する必要はありません。
「ビルドエラーが発生しました。続行して、最後に成功したビルドを実行しますか?」というメッセージが表示される。
エラー BC30512 Option Strict On では ‘String’ から ‘Double’ への暗黙的な変換は許可されていません。