10

関連する質問で、私のチームは (できれば) LINQ の使用を開始しようとしています。匿名型を利用したいと考えています。VB.NET の Option Strict (プロジェクトの全期間を通じて使用してきました) と新しい Option Infer ディレクティブを組み合わせる最良の方法は何ですか?

4

2 に答える 2

10

Option Strict とOption Inferは競合しないので、両方をオンにしても害はないと思います。

スタイル ガイドとして、各クラス ファイルの先頭に Option Strict、Explicit、および Infer を配置することを好みます。これにより、プロジェクトまたは IDE 設定の違いによる問題を防ぎ、使用する設定を明確にします。

于 2008-10-11T16:45:39.780 に答える
0

Option Strict は Option Infer なしで使用できますが、結果の IL に違いが生じる可能性があるため、Option Strict なしで Option Infer を使用しないでください。

次のコード行を検討してください。

txtBox.Text = If(str="", Nothing, CDate(str))

Option Strict Off と Option Infer Off を使用すると、次のようになります。

txtBox.Text = CStr(If(str="", Nothing, CType(CDate(str), Object)))

str="" の場合、txtBox.Text は Nothing/空の文字列に設定されます。

Option Infer On で Option Strict Off を使用すると、次のようになります。

txtBox.Text = Cstr(If(str="", CDate(Nothing), CType(CDate(str), Object)))

CDate(Nothing) = Date.MinValue など txtBox.Text = "01/01/0001"

Option Strict はコードをコンパイルしないようにすることしかできず、Option Infer はその意味を変えることができます。Infer が良いことではないというわけではありませんが、一般的には良いことですが、注意すべき点がいくつかあります。

元のコードは次のように記述できます。

 txtBox.Text = Cstr(If(str="", Nothing, CDate(str)))

その場合、Option を有効にしても Option Strict は保存されません。推測しますが、Strict のないコード ベースでは元のバージョンの可能性が高くなります。

于 2019-01-19T12:09:48.680 に答える