-1

Jeff Atwood のブログ記事Option Strict and Option Explicit in VB.NET 2005を読みました。

「すべてのアプリケーションで常に Option Strict をオンにする必要があります」という文に興味があります。

オブジェクト指向プログラミング言語では、これを ON に設定する必要があることに同意します。ただし、私が見るすべてのアプリケーションはオフに設定されているようです。また、オンラインで見つけたコードの断片のほとんどは、開発者がこれをオフにしたことを示唆しているようです。たとえば、これをよく見かけます。

dim id as Integer = objDR("ID")

ここで、オブジェクトは暗黙的に整数にキャストされます。

これをオフにすることを決定する際に開発者が使用する特定の基準はありますか、それとも単にVisual Basic 6.0との一貫性を維持するためですか?

4

3 に答える 3

2

VB6 では、多くの場合、特定の変数、フィールド、またはパラメーターの型を決定するためにコンパイル時に決定することは不可能です。そのような保管場所の中には、実際には常に 1 つの特定のタイプのアイテムを保持するものがあります。ただし、異なる時期に異なるものを保持するものもあります。無関係な型がMoeあり、Larry両方とも という名前のプロパティを持ち、未指定の型Curlyのパラメータを取るメソッドがと言うとします。そのようなメソッドに aまたは aを渡すことができる場合、コードを VB.NET の方言にきれいに移植するには、2つの異なるオーバーロードとして記述する必要があります。メンバーとの共通インターフェースを実装するFooFoo.Curly = 5MoeLarryOption Strict OnMoeLarryMoeLarryCurly. これらのアプローチのいずれかが実行可能である場合は、コード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" よりも小さい)、特定のコード片が最終的に何をするかを予測することはしばしば困難です。

于 2013-05-24T19:11:52.420 に答える
0

MSDNから

IDE で警告構成を設定するには

Option Strict ステートメントの代わりにコンパイル ページ、プロジェクト デザイナー (Visual Basic) を使用すると、エラーを生成する条件をさらに制御できます。コンパイル ページの警告構成セクションには、Option Strict がオンの場合にコンパイル時エラーを引き起こす 3 つの条件に対応する設定があります。これらの設定は次のとおりです。

Implicit conversion

Late binding; call could fail at run time

Implicit type; object assumed

Option Strict を On に設定すると、これら 3 つの警告構成設定がすべて Error に設定されます。Option Strict を Off に設定すると、3 つの設定はすべて None に設定されます。

各警告構成設定を個別に [なし]、[警告]、または [エラー] に変更できます。3 つの警告構成設定がすべて [エラー] に設定されている場合、[オプションの厳格] ボックスに [オン] が表示されます。3 つすべてが [なし] に設定されている場合、このボックスには [オフ] が表示されます。これらの設定のその他の組み合わせでは、(カスタム) が表示されます。

于 2013-05-24T20:10:28.587 に答える
0

MSDNの回答

すべてのプログラミング要素のデータ型を指定することは、厳密な型指定と呼ばれます。Option Strict On を設定すると、Visual Basic は厳密な型指定を強制します。これは、次の理由から強く推奨されます。

これにより、変数とパラメーターの IntelliSense サポートが有効になります。これにより、コードを入力するときに、それらのプロパティと他のメンバーを表示できます。

これにより、コンパイラは型チェックを実行できます。これは、オーバーフローなどのエラーが原因で実行時に失敗する可能性があるステートメントをキャッチするのに役立ちます。また、それらをサポートしていないオブジェクトのメソッドへの呼び出しもキャッチします。

これにより、コードの実行が高速になります。この理由の 1 つは、プログラミング要素のデータ型を指定しないと、Visual Basic コンパイラがそれに Object 型を割り当てるためです。コンパイルされたコードは、Object と他のデータ型の間で相互に変換しなければならない場合があり、パフォーマンスが低下します。

于 2013-05-24T19:52:09.077 に答える