49

私はこの投稿を見ました:

タイプミス…厳密で明示的なオプションを使用してください。私がコンサルタントとして行っていたあるソフトウェア開発プロジェクトでは、どこでも途方もない量のエラーが発生していました…開発者はスペルができず、間違ったスペルで変数を宣言することが判明しました。 。値を割り当てるときに正しいスペルを使用し、オプションを明示的にオフにするまでは、大したことはありません。彼らに痛い…」

Option Strictとにかく何Option Explicitですか?私はそれをグーグルで検索しましたが、アイデアを得ることができません(ほとんどがVisual Basicであるため、私はPHPを実行しています)。

4

3 に答える 3

70

Option Explicitすべての変数を宣言する必要があることを意味します。ここを参照してください。これがないと、別の変数名のつづりを間違えるだけで、誤って新しい変数を宣言する可能性があります。これは、VBプログラムをデバッグし、プログラムが正しく機能しない理由を理解しようとしているときに、多くの悲しみを引き起こすものの1つです。私の意見では、これはオプションでさえあるべきではありません-それは常にオンになっているべきです。

Option Strict「暗黙のデータ型変換を拡張変換のみに制限します」。ここを参照してください。このオプションを有効にすると、あるデータ型を誤って精度の低い別のデータ型に変換することはできません(たとえば、からIntegerByte。繰り返しますが、デフォルトでオンにする必要があるオプション。

于 2010-03-16T13:20:09.693 に答える
35

TL;DR

Option Strict実行時にコードをコンパイルして失敗するのではなく、設計時に潜在的なエラーや実際のエラーを検出するのにOption Explicit役立ちます。両方を切り替える必要があります。 On

Option Strict と Option Explicit はデフォルトでオフになっています。それらをオンにするには:

オプション厳密 Tools -> Options -> Projects and Solutions -> VB defaults -> Option Strict。に設定しOnます。

オプション明示的 Tools -> Options -> Editor -> Require Variable Declaration。それをチェックしてください。

オプション明示

Option Explicit Offを使用すると、変数を使用する前に変数を宣言 (Dim) する必要はありません。

a = 123 'a is automatically declared as an Integer

これは、ある場所で変数を宣言し、後でそれを使用すると思ってタイプミスをした場合に危険です。

Dim counter As Integer = 0
'some lines later...
countr = 55 'This creates a new variable called countr 

さらに悪いことに、スコープ内にあると思われる変数に値を割り当てますが、そうではなく、同じ名前でスコープが異なる新しい変数を宣言することになります。

多くのコードや長いメソッドを使用すると、これらは見逃しやすいため、この種の問題を防ぐために常に有効にする必要があります。

オプション厳密

Option Strict Offを使用すると、エラーなしで暗黙的にデータ型を縮小型に変換できます。

Dim d As Double = 999.99
Dim s As Single = d 'No error with Option Strict Off

このような場合、Option Strict は、double 値が を超えないようにするための開発者への警告として機能しますSingle.MaxValue

Enum をエラーなしで間違った値に割り当てることもできます。以下は、この実際の例です。

ここに画像の説明を入力

変数は (24) に設定されているはずですがEOpticalCalStates.FAILED、実際には State が に相当する 4 の値に設定されEOpticalCalStates.ALI_HORます。

このようなものは簡単には見つかりません。

したがって、常にデフォルトで Option Strict をオンにする必要があります。この設定はデフォルトでオンに設定されているはずですが、Microsoft は下位互換性を高めるためにオフのままにすることにしました (後から考えると、これは IMO の間違いでした)。


新しいプロジェクトのデフォルトを設定する前にプロジェクトを開始した場合は、次を使用する必要があります。

「Project」メニュー→「Properties...」項目→「Compile」タブ→「Option strict」を「On」に設定します。

于 2015-05-01T10:12:21.423 に答える
6

詳細はこちら: http ://support.microsoft.com/kb/311329

OptionExplicitステートメント

デフォルトでは、Visual Basic.NETまたはVisualBasicコンパイラは、明示的な変数宣言を強制します。これには、使用する前にすべての変数を宣言する必要があります。このデフォルトの動作を変更するには、「デフォルトのプロジェクト値の変更」セクションを参照してください。

OptionStrictステートメント

デフォルトでは、VisualBasic.NETまたはVisualBasicコンパイラは厳密なデータ入力を強制しません。このデフォルトの動作を変更するには、「デフォルトのプロジェクト値の変更」セクションを参照してください。

于 2010-03-16T13:20:06.770 に答える