OptionStrictとOptionExplicitは何をしますか?



What Do Option Strict



解決:

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

Option Strict 'は、暗黙のデータ型変換を拡張変換のみに制限します。こちらをご覧ください。このオプションを有効にすると、あるデータ型を誤って精度の低い別のデータ型に変換することはできません(例:整数からバイト)。繰り返しますが、デフォルトでオンにする必要があるオプション。




TL; DR

オプション厳格およびオプション明示はあなたがキャッチするのに役立ちます 潜在的現在 でのエラー 設計時間 、コードをコンパイルして失敗するのではなく ランタイム 。切り替える必要があります どちらも オン。

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



オプション厳格[ツール]-> [オプション]-> [プロジェクトとソリューション]-> [VBのデフォルト]-> [オプションの厳密]。に設定しますオン。

オプション明示[ツール]-> [オプション]-> [エディター]-> [変数宣言が必要]。それをチェックします。

オプション明示

オプション明示的オフ 使用する前に変数を宣言(Dim)する必要はありません。



a = 123'aは自動的に整数として宣言されます

これは、ある場所で変数を宣言し、後でそれを使用していると思っても、入力を間違えると危険になります。

Dim counter As Integer = 0 '数行後... countr = 55'これにより、countrという新しい変数が作成されます。

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

多くのコードや長いメソッドでは、これらを見逃しやすいので、この種の問題を防ぐために常にスイッチをオンにする必要があります。

オプション厳格

オプション厳密オフ エラーなしで、データ型をナローイング型に暗黙的に変換できます。

Dim d As Double = 999.99 Dim s As Single = d 'オプションを厳密にオフにしてもエラーなし

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

エラーなしで、列挙型を誤った値に割り当てることもできます。以下は、これの実際の例です。

ここに画像の説明を入力してください

変数は次のように設定されている必要がありますEOpticalCalStates.FAILED(24)、実際には、状態を4の値に設定します。これは、EOpticalCalStates.ALI_HOR。

このようなものを見つけるのは簡単ではありません。

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


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

「プロジェクト」メニュー->「プロパティ...」項目->「コンパイル」タブ->「オプション厳密」を「オン」に設定します。


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

OptionExplicitステートメント

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

OptionStrictステートメント

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