VB6 では、多くの場合、特定の変数、フィールド、またはパラメーターの型を決定するためにコンパイル時に決定することは不可能です。そのような保管場所の中には、実際には常に 1 つの特定のタイプのアイテムを保持するものがあります。ただし、異なる時期に異なるものを保持するものもあります。無関係な型がMoe
あり、Larry
両方とも という名前のプロパティを持ち、未指定の型Curly
のパラメータを取るメソッドがと言うとします。そのようなメソッドに aまたは aを渡すことができる場合、コードを VB.NET の方言にきれいに移植するには、2つの異なるオーバーロードとして記述する必要があります。メンバーとの共通インターフェースを実装するFoo
Foo.Curly = 5
Moe
Larry
Option Strict On
Moe
Larry
Moe
Larry
Curly
. これらのアプローチのいずれかが実行可能である場合は、コードOption Strict On
を VB.NET の方言に移植する必要があります。ただし、一部の既存の VB6 コードは、どちらの修正も受け入れられません。そのようなコードを方言に移植するOption Strict Off
ことは、それを再加工して動作させるよりもはるかに簡単かもしれませんOption Strict On
。
場合によっては、Option Strict Off
互換性を確保するためにラングリングできない既存の VB6 コードを移植しようとするときに、justifiableの使用を検討しますOption Strict On
。しかし、その方言を実質的に使用する必要のある新しいデザインを作成する理由はありません。それに関連する動作の多くは、ジェネリックなどの .NET の新しい機能とうまく相互作用せず、関係演算子は一貫した結果を生成しません (たとえば、"-1" は -2 よりも大きく、-2 は "-3" よりも大きく、しかし、"-1" は "-3" よりも小さい)、特定のコード片が最終的に何をするかを予測することはしばしば困難です。