ホーム > Visual Basic > VS2008,2010ではOption Infer On, Option Strict Offが既定なんだ。

VS2008,2010ではOption Infer On, Option Strict Offが既定なんだ。


VBで型を省略したときの振る舞いをみていて、あれ?既定では暗黙の型変換の禁止(Option Strict)はOffなんだし、これでInvalidCastExceptionでるのか?と思ったら、型推論の利用(Option Infer)はOnが既定だから、型推論でIntegerとして推論された変数aに文字列を入れると実行時にInvalidCastExceptionが発生するんですね。。。

Infer Onを既定とするなら、Strict Onも既定にして欲しかったな。とりあえず、Strict をOnにすればコンパイル時にはじけるので、実行時エラーでしょんぼりしたくなかったら型推論を利用する場合はOption Strictは必ずOnにしたほうがいいですね。

そもそも、そんなエラーが出るようなプロジェクトでStrictをOnに変更したら、至る所でコンパイルエラーになって大変そう。。。まぁコンパイルエラーになるけれど、実行時エラーよりはだいぶマシですよね。

となると、型推論が無い時代のソース(2005以前)からアップグレードしたプロジェクトだと大変だよな。とおもったら、Visual Studio 2008時点のOption Inferのヘルプにこんなのが書いてありました。

On または Off の指定がない場合、Visual Basic 2008 で作成されるプロジェクトの既定値は On になります。以前のバージョンからアップグレードされたプロジェクトの既定値は Off になります。

http://msdn.microsoft.com/ja-jp/library/bb384665(v=VS.90).aspx

この記述2010のヘルプだと消えているんだけれど、2010でアップグレードした場合はどうなるんだろう。
→ ローカル型の推論のヘルプにアップグレードウィザードを利用したらInfer はOffになるって記述を発見

コード内で Option Infer の値を指定しなければ、コンパイラは既定で Option Infer On になります。 Visual Basic 2008 以前からアップグレードされたプロジェクトの場合、コンパイラは既定で Option Infer Off になります。

http://msdn.microsoft.com/ja-jp/library/bb384937.aspx

とりあえず型推論(Infer On)を利用するときは、暗黙の型変換の禁止(Strict On)を有効にして実行時エラーがでないようにしたほうが安心ですね。

広告
カテゴリー:Visual Basic タグ: ,
  1. まだコメントはありません。
  1. No trackbacks yet.

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。