トップ回答者
integer と Boolean の代入動作について

質問
-
よろしくお願いします。
VB.NET で、Dim X as Integer = 5
Dim Y as BooleanY = X
は、MSIL上評価式(cgt.un)として扱われるようです。
でも、両変数がIntegerの場合は代入(ldloc,stloc)です。Option Strict を On にすると、このコードはコンパイル前にエラーとなるのですが、
そうでない場合は、ビルド時も実行時もエラーとはならず、発見しにくいバグとなる場合があります。
例えば、WEBサービス側がこのようなバグを内包していた場合、クライアント側から、この現象を推測すらできない可能性があります。
みなさんはどうされているのでしょうか?
Option Strict On を義務付けるべきなのか、それとも何か他に推奨される方法などがあるでしょうか?
VS2008を使用しています。
ご意見、よろしくお願いします。
K.Oumi
回答
-
基本はOption Strict Onにしていますが、ExcelなどComを呼び出す場合に、バージョン違いで参照を変えなければいけないのを避けるためにOption Strict Offにしています。その場合にも呼び出しを1つのソースファイルに局所化してそのファイルだけをOffにしています。
2010からはC#でもdynamicキーワードによってレイトバインディングができるようになります。
http://blogs.msdn.com/dd_jpn/archive/2009/01/28/9380132.aspx
現状のVBやC#では共変・反変の機能が貧弱ですから型のつじつま合わせのためにキャストをしなければならないことが多く、そんな場合にもレイトバインディングを活用する場面が出てくるかも知れません。
http://www.mahoroba.ne.jp/~mw_ken- 回答としてマーク K.Oumi 2009年9月4日 5:19
-
少し前に似た話題がありましたので、ご紹介しておきます。
Option StrictをOnにする意義について
http://social.msdn.microsoft.com/Forums/ja-JP/vbexpressja/thread/87225739-d2e8-44ab-8c74-bd5829ba8c97
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/- 回答としてマーク K.Oumi 2009年9月4日 5:19
すべての返信
-
基本はOption Strict Onにしていますが、ExcelなどComを呼び出す場合に、バージョン違いで参照を変えなければいけないのを避けるためにOption Strict Offにしています。その場合にも呼び出しを1つのソースファイルに局所化してそのファイルだけをOffにしています。
2010からはC#でもdynamicキーワードによってレイトバインディングができるようになります。
http://blogs.msdn.com/dd_jpn/archive/2009/01/28/9380132.aspx
現状のVBやC#では共変・反変の機能が貧弱ですから型のつじつま合わせのためにキャストをしなければならないことが多く、そんな場合にもレイトバインディングを活用する場面が出てくるかも知れません。
http://www.mahoroba.ne.jp/~mw_ken- 回答としてマーク K.Oumi 2009年9月4日 5:19
-
少し前に似た話題がありましたので、ご紹介しておきます。
Option StrictをOnにする意義について
http://social.msdn.microsoft.com/Forums/ja-JP/vbexpressja/thread/87225739-d2e8-44ab-8c74-bd5829ba8c97
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/- 回答としてマーク K.Oumi 2009年9月4日 5:19