Option Strict StatementOption Strict Statement

暗黙的なデータ型変換を拡大変換のみに制限、遅延バインディングが禁止および禁止になる暗黙的な型指定、Object型。Restricts implicit data type conversions to only widening conversions, disallows late binding, and disallows implicit typing that results in an Object type.

構文Syntax

Option Strict { On | Off }  

指定項目Parts

用語Term 定義Definition
On 任意。Optional. により、Option Strictをチェックします。Enables Option Strict checking.
Off 任意。Optional. 無効にしますOption Strictをチェックします。Disables Option Strict checking.

RemarksRemarks

ときにOption Strict OnまたはOption Strictファイルでは、コンパイル時エラーが発生する、次の条件が表示されます。When Option Strict On or Option Strict appears in a file, the following conditions cause a compile-time error:

  • 暗黙的な縮小変換Implicit narrowing conversions

  • 遅延バインディングLate binding

  • 結果が Object 型となる暗黙の型指定Implicit typing that results in an Object type

注意

設定できる警告の構成で、 [コンパイル] ページ、プロジェクト デザイナー (Visual Basic)コンパイル時エラーが発生する 3 つの条件に対応する 3 つの設定があります。In the warning configurations that you can set on the Compile Page, Project Designer (Visual Basic), there are three settings that correspond to the three conditions that cause a compile-time error. これらの設定を使用する方法については、次を参照してください。 IDE で警告の構成を設定するこのトピックで後述します。For information about how to use these settings, see To set warning configurations in the IDE later in this topic.

Option Strict Offステートメントは、これらのエラーまたは警告を有効にする、関連する IDE 設定を指定する場合でもエラーと警告は、次の 3 つのすべての条件のチェックをオフにします。The Option Strict Off statement turns off error and warning checking for all three conditions, even if the associated IDE settings specify to turn on these errors or warnings. Option Strict On場合でも、これらのエラーまたは警告をオフに関連付けられている IDE 設定の指定、ステートメントがエラーと警告は、次の 3 つのすべての条件のチェックをオンにします。The Option Strict On statement turns on error and warning checking for all three conditions, even if the associated IDE settings specify to turn off these errors or warnings.

使用する場合、Option Strictステートメントは、ファイル内の他のコード ステートメントの前に出現する必要があります。If used, the Option Strict statement must appear before any other code statements in a file.

設定するとOption StrictOn、Visual Basic プログラミングのすべての要素のデータ型を指定することを確認します。When you set Option Strict to On, Visual Basic checks that data types are specified for all programming elements. データ型を明示的に指定またはローカル型推論を使用して指定できます。Data types can be specified explicitly, or specified by using local type inference. すべてのプログラミング要素のデータ型を指定することはお勧めしますが、次の理由。Specifying data types for all your programming elements is recommended, for the following reasons:

  • 変数とパラメーターの IntelliSense のサポートが有効にするとします。It enables IntelliSense support for your variables and parameters. これにより、コードを入力すると、プロパティやその他のメンバーを参照してください。This enables you to see their properties and other members as you type code.

  • これにより、コンパイラが型チェックを実行できます。It enables the compiler to perform type checking. 型チェックでは、型変換エラーのため実行時に失敗するステートメントを検索できます。Type checking helps you find statements that can fail at run time because of type conversion errors. また、これらのメソッドをサポートしていないオブジェクトに対するメソッドの呼び出しを識別します。It also identifies calls to methods on objects that do not support those methods.

  • これは、コードの実行が速くなります。It speeds up the execution of code. この理由の 1 つは、プログラミング要素のデータ型を指定しない場合、Visual Basic コンパイラが割り当てる、Object型。One reason for this is that if you do not specify a data type for a programming element, the Visual Basic compiler assigns it the Object type. コンパイル済みのコードは、間を気軽に変換する必要がありますObjectとその他のデータ型は、パフォーマンスが低下します。Compiled code might have to convert back and forth between Object and other data types, which reduces performance.

暗黙的な縮小変換エラーImplicit Narrowing Conversion Errors

縮小変換する暗黙的なデータ型変換がある場合は、暗黙的な縮小変換エラーが発生します。Implicit narrowing conversion errors occur when there is an implicit data type conversion that is a narrowing conversion.

Visual Basic は、多くのデータ型を他のデータ型に変換できます。Visual Basic can convert many data types to other data types. 1 つのデータ型の値は精度が低いまたは容量の小さいデータ型に変換するときに、データ損失が発生することができます。Data loss can occur when the value of one data type is converted to a data type that has less precision or a smaller capacity. このような縮小変換が失敗した場合、実行時エラーが発生します。A run-time error occurs if such a narrowing conversion fails. Option Strict これらの縮小変換のコンパイル時に通知をにより、それらを回避するようにします。Option Strict ensures compile-time notification of these narrowing conversions so that you can avoid them. 詳細については、次を参照してください。暗黙的および明示的な変換Widening and Narrowing Conversionsします。For more information, see Implicit and Explicit Conversions and Widening and Narrowing Conversions.

エラーが発生する変換には、式で発生する暗黙的な変換が含まれます。Conversions that can cause errors include implicit conversions that occur in expressions. 詳細については、次のトピックを参照してください。For more information, see the following topics:

使用して文字列を連結するときに、 & 演算子、すべての文字列への変換は拡大変換と見なされます。When you concatenate strings by using the & Operator, all conversions to the strings are considered to be widening. 場合でも、暗黙的な縮小変換エラーは、これらの変換が生成されないようにOption Strictにします。So these conversions do not generate an implicit narrowing conversion error, even if Option Strict is on.

場合に縮小変換がコンパイル時エラーになりますを対応するパラメーターと異なるデータ型を持つ引数を持つメソッドを呼び出すときにOption Strictにします。When you call a method that has an argument that has a data type different from the corresponding parameter, a narrowing conversion causes a compile-time error if Option Strict is on. 拡大変換または明示的な変換を使用して、コンパイル時エラーを回避できます。You can avoid the compile-time error by using a widening conversion or an explicit conversion.

内の要素からの変換のコンパイル時に暗黙的な縮小変換エラーが抑制されます、For Each…Nextループ コントロール変数のコレクション。Implicit narrowing conversion errors are suppressed at compile-time for conversions from the elements in a For Each…Next collection to the loop control variable. これが発生した場合でもOption Strictにします。This occurs even if Option Strict is on. 詳細については、"Narrowing Conversions"セクションを参照してくださいごとにしています...次のステートメントのします。For more information, see the "Narrowing Conversions" section in For Each...Next Statement.

遅延バインド エラーLate Binding Errors

Object 型として宣言された変数のプロパティまたはメソッドにオブジェクトを代入する場合は、そのオブジェクトは遅延バインディングされます。An object is late bound when it is assigned to a property or method of a variable that is declared to be of type Object. 詳細については、次を参照してください。事前バインディングと遅延バインディングします。For more information, see Early and Late Binding.

オブジェクトの暗黙的な型のエラーImplicit Object Type Errors

適切な型が宣言された変数を推論できない場合は暗黙的なオブジェクトの型エラーが発生するため、Object の型が推論されます。Implicit object type errors occur when an appropriate type cannot be inferred for a declared variable, so a type of Object is inferred. これは主に、As 句を使用せず、Option Infer をオフにして、Dim ステートメントを使用して変数を宣言した場合に発生します。This primarily occurs when you use a Dim statement to declare a variable without using an As clause, and Option Infer is off. 詳細については、次を参照してください。 Option Infer ステートメントVisual Basic 言語仕様します。For more information, see Option Infer Statement and the Visual Basic Language Specification.

メソッドのパラメーターに、As句は省略可能な場合はOption Strictはオフです。For method parameters, the As clause is optional if Option Strict is off. ただし、任意の 1 つのパラメーターを使用している場合、As句では、これらはすべて使用する必要あります。However, if any one parameter uses an As clause, they all must use it. 場合Option Strictでは、As句がすべてのパラメーター定義が必要です。If Option Strict is on, the As clause is required for every parameter definition.

使用せずに変数を宣言する場合、As句に設定し、 Nothing、変数の型を持つObjectします。If you declare a variable without using an As clause and set it to Nothing, the variable has a type of Object. コンパイル時エラーが発生しないケースでこのときにOption Strict上とOption Inferにします。No compile-time error occurs in this case when Option Strict is on and Option Infer is on. この例はDim something = Nothingします。An example of this is Dim something = Nothing.

既定のデータ型と値Default Data Types and Values

次の表に、データ型と初期化子で指定するさまざまな組み合わせの結果、 Dim ステートメントします。The following table describes the results of various combinations of specifying the data type and initializer in a Dim Statement.

データ型が指定されているかData type specified? 初期化子が指定されているかInitializer specified? Example 結果Result
いいえNo いいえNo Dim qty Option Strict がオフ (既定値) の場合、変数は Nothing に設定されます。If Option Strict is off (the default), the variable is set to Nothing.

Option Strict がオンの場合、コンパイル時エラーが発生します。If Option Strict is on, a compile-time error occurs.
No [はい]Yes Dim qty = 5 Option Infer がオン (既定値) の場合、変数は初期化子のデータ型になります。If Option Infer is on (the default), the variable takes the data type of the initializer. 参照してくださいローカル型推論します。See Local Type Inference.

Option Infer がオフで、Option Strict がオフの場合、変数は Object のデータ型になります。If Option Infer is off and Option Strict is off, the variable takes the data type of Object.

Option Infer がオフで、Option Strict がオンの場合、コンパイル時エラーが発生します。If Option Infer is off and Option Strict is on, a compile-time error occurs.
[はい]Yes いいえNo Dim qty As Integer 変数は、データ型の既定値に初期化されます。The variable is initialized to the default value for the data type. 詳細については、次を参照してください。 Dim ステートメントします。For more information, see Dim Statement.
[はい]Yes [はい]Yes Dim qty As Integer = 5 初期化子のデータ型を指定したデータ型に変換できない場合は、コンパイル時エラーが発生します。If the data type of the initializer is not convertible to the specified data type, a compile-time error occurs.

ときに Option Strict のステートメントが存在しません。When an Option Strict Statement Is Not Present

ソース コードが含まれていない場合、Option Strictステートメントでは、 Option strictの設定、 [コンパイル] ページ、プロジェクト デザイナー (Visual Basic)使用されます。If the source code does not contain an Option Strict statement, the Option strict setting on the Compile Page, Project Designer (Visual Basic) is used. コンパイル ページエラーを生成する条件をさらに細かく制御する設定があります。The Compile Page has settings that provide additional control over the conditions that generate an error.

使用することができます、コマンド ライン コンパイラを使用している場合、 /optionstrictコンパイラ オプションの設定を指定するOption Strictします。If you are using the command-line compiler, you can use the /optionstrict compiler option to specify a setting for Option Strict.

IDE で Option Strict を設定するにはTo set Option Strict in the IDE

注意

次の手順で参照している Visual Studio ユーザー インターフェイス要素の一部は、お使いのコンピューターでは名前や場所が異なる場合があります。Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。The Visual Studio edition that you have and the settings that you use determine these elements. 詳細については、「IDE をカスタマイズする」をご覧ください。For more information, see Personalizing the IDE.

  1. ソリューション エクスプローラーでプロジェクトを選択します。In Solution Explorer, select a project. [プロジェクト] メニューの [プロパティ] をクリックします。On the Project menu, click Properties.

  2. コンパイル タブの値を設定、 Option Strictボックス。On the Compile tab, set the value in the Option Strict box.

IDE で警告の構成を設定するにはTo set warning configurations in the IDE

使用すると、 [コンパイル] ページ、プロジェクト デザイナー (Visual Basic)の代わりに、Option Strictステートメントでは、エラーを生成する条件をさらに制御があります。When you use the Compile Page, Project Designer (Visual Basic) instead of an Option Strict statement, you have additional control over the conditions that generate errors. 警告の構成のセクション、コンパイル ページがコンパイル時エラーが発生する 3 つの条件に対応する設定とOption Strictにします。The Warning configurations section of the Compile Page has settings that correspond to the three conditions that cause a compile-time error when Option Strict is on. これらの設定を次に示します。Following are these settings:

  • 暗黙的な変換Implicit conversion

  • 遅延バインディング、呼び出しが実行時に失敗する可能性がありますLate binding; call could fail at run time

  • 暗黙的な型、オブジェクトと見なされますImplicit type; object assumed

[Option Strict][オン] に設定すると、これら 3 つの警告の構成設定のすべてが [エラー] に設定されます。When you set Option Strict to On, all three of these warning configuration settings are set to Error. [Option Strict][オフ] に設定すると、3 つの設定すべてが [なし] に設定されます。When you set Option Strict to Off, all three settings are set to None.

各警告の構成設定を個別に [なし][警告]、または [エラー] に変更することができます。You can individually change each warning configuration setting to None, Warning, or Error. 3 つの警告の構成設定がすべて [エラー] に設定されている場合、Option strict ボックスに On が表示されます。If all three warning configuration settings are set to Error, On appears in the Option strict box. 3 つすべてが [なし] に設定されている場合、このボックスには Off が表示されます。If all three are set to None, Off appears in this box. これらの設定のその他の組み合わせに対しては、(カスタム) が表示されます。For any other combination of these settings, (custom) appears.

新しいプロジェクトの Option Strict の既定の設定を設定するにはTo set the Option Strict default setting for new projects

プロジェクトを作成するときに、 Option Strictの設定、コンパイルタブに設定されている、 Option Strictでの設定、オプションダイアログ ボックス。When you create a project, the Option Strict setting on the Compile tab is set to the Option Strict setting in the Options dialog box.

設定するOption Strictでこのダイアログ ボックスで、ツール メニューのをクリックしてオプションします。To set Option Strict in this dialog box, on the Tools menu, click Options. [オプション] ダイアログ ボックスの [プロジェクトおよびソリューション] を展開し、[VISUAL BASIC の既定値] をクリックします。In the Options dialog box, expand Projects and Solutions, and then click VB Defaults. 初期の既定の設定でVB の既定値Offします。The initial default setting in VB Defaults is Off.

コマンドラインで Option Strict を設定するにはTo set Option Strict on the command line

含める、 /optionstrictコンパイラ オプションで、 vbcコマンド。Include the /optionstrict compiler option in the vbc command.

Example

次の例では、縮小、変換は暗黙的な型変換によって発生したコンパイル時エラーを示します。The following examples demonstrate compile-time errors caused by implicit type conversions that are narrowing conversions. このようなエラーに対応する、暗黙的な変換条件、コンパイル ページします。This category of errors corresponds to the Implicit conversion condition on the Compile Page.

' If Option Strict is on, this implicit narrowing
' conversion causes a compile-time error.
' The commented statements below use explicit
' conversions to avoid a compile-time error.
Dim cyclists As Long = 5
Dim bicycles As Integer = cyclists
'Dim bicycles As Integer = CType(cyclists, Integer)
'Dim bicycles As Integer = CInt(cyclists)
'Dim bicycles As Integer = Convert.ToInt32(cyclists)


' If Option Strict is on, this implicit narrowing
' conversion causes a compile-time error.
' The commented statements below use explicit
' conversions to avoid a compile-time error.
Dim charVal As Char = "a"
'Dim charVal As Char = "a"c
'Dim charVal As Char = CType("a", Char)


' If Option Strict is on, a compile-time error occurs.
' If Option Strict is off, the string is implicitly converted
' to a Double, and then is added to the other number.
Dim myAge As Integer = "34" + 6


' If Option Strict is on, a compile-time error occurs.
' If Option Strict is off, the floating-point number
' is implicitly converted to a Long.
Dim num = 123.45 \ 10

Example

次の例では、遅延バインディングによるコンパイル時エラーを示します。The following example demonstrates a compile-time error caused by late binding. このカテゴリのエラーに対応する、遅延バインディング; 呼び出しは実行時に失敗でした条件、コンパイル ページします。This category of errors corresponds to the Late binding; call could fail at run time condition on the Compile Page.

' If Option Strict is on, this late binding
' causes a compile-time error. If Option Strict
' is off, the late binding instead causes a
' run-time error.
Dim punchCard As New Object
punchCard.Column = 5

Example

次の例では、暗黙の型で宣言された変数によって発生したエラーObjectします。The following examples demonstrate errors caused by variables that are declared with an implicit type of Object. このようなエラーに対応する、暗黙的な型; object と見なされます条件、コンパイル ページします。This category of errors corresponds to the Implicit type; object assumed condition on the Compile Page.

' If Option Strict is on and Option Infer is off,
' this Dim statement without an As clause 
' causes a compile-time error.
Dim cardReaders = 5

' If Option Strict is on, a compile-time error occurs.
' If Option Strict is off, the variable is set to Nothing.
Dim dryWall
' If Option Strict is on, this parameter without an
' As clause causes a compile-time error.
Private Sub DetectIntergalacticRange(ByVal photonAttenuation)

End Sub

関連項目See also