Option Infer ステートメント

更新 : 2007 年 11 月

変数の宣言に対するローカル型の推論の使用を有効にします。

Option Infer { On | Off }

指定項目

  • On
    省略可能です。ローカル型の推論を有効にします。

  • Off
    省略可能です。ローカル型の推論を無効にします。

Bb384665.alert_note(ja-jp,VS.90).gifメモ :

On または Off の指定がない場合、Visual Basic 2008 で作成されるプロジェクトの既定値は On になります。以前のバージョンからアップグレードされたプロジェクトの既定値は Off になります。

解説

Option Infer を On に設定すると、明示的にデータ型を指定せずに変数を宣言できます。コンパイラは変数のデータ型を初期化式の型から推論します。たとえば、Option Infer と Option Strict を無効にすると、Dim someVar = 2 宣言内の変数は、オブジェクトとしてのみ識別されます。

Option Infer と Option Strict が無効な場合の IntelliSense
宣言の IntelliSense ビュー。

Option Infer を On に設定すると、コンパイラは、someVar をInteger として識別します。

Option Infer が有効な場合の IntelliSense
宣言の IntelliSense ビュー。

この後、コンパイラは、プロジェクトが実行されるまでは認識されない可能性がある、プロジェクト内の変数の不整合を検出できます。someVar の Integer としての識別も、統合開発環境 (IDE: Integrated Development Environment) での IntelliSense の完全なサポートを可能にします。

Bb384665.alert_note(ja-jp,VS.90).gifメモ :

コードまたは IDE で Option Infer に値の指定がない場合、新規作成されるプロジェクトに対するコンパイラの既定値は Option Infer On になります。アップグレードされたプロジェクトの既定値は Option Infer Off になります。

Bb384665.alert_note(ja-jp,VS.90).gifメモ :

お使いのマシンで、Visual Studio ユーザー インターフェイスの一部の要素の名前や場所が、次の手順とは異なる場合があります。これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。詳細については、「Visual Studio の設定」を参照してください。

Option Infer をファイルに設定するには

  • ファイルの先頭の、他のソース コードの前に、Option Infer On または Option Infer Off を入力します。ファイル内の Option Infer の設定値が、IDE またはコマンド ラインでの設定値と競合する場合は、ファイル内の値が優先します。

IDE で単一のプロジェクトに対して Option Infer を設定するには

  1. ソリューション エクスプローラでプロジェクトを選択します。

  2. [表示] メニューの [プロパティ ページ] をクリックして、プロジェクト デザイナを開きます。

  3. [コンパイル] タブで、[Option Infer] ボックスの一覧の [On] または [Off] をクリックします。

IDE で Option Infer の既定値を設定するには

  1. [ツール] メニューの [オプション] をクリックします。

  2. [プロジェクトおよびソリューション] ノードを展開します。

  3. [Visual Basic の既定値] をクリックします。

  4. [Option Infer] ボックスの一覧の [On] または [Off] をクリックします。

    Bb384665.alert_note(ja-jp,VS.90).gifメモ :

    Option Infer の値を [ツール] メニューを使用して設定した場合、その値は、次に変更されるまで、以降のプロジェクトで引き続き使用されます。

コマンド ラインで Option Infer を設定するには

  • vbc コマンドに /optioninfer コンパイラ オプションを含めます。

使用例

次の例は、Option Infer ステートメントを使用してローカル型の推論を有効にする方法を示しています。

' Enable Option Infer before trying these examples.

' Variable num is an Integer.
Dim num = 5

' Variable dbl is a Double.
Dim dbl = 4.113

' Variable str is a String.
Dim str = "abc"

' Variable pList is an array of Process objects.
Dim pList = Process.GetProcesses()

' Variable i is an Integer.
For i = 1 To 10
    Console.WriteLine(i)
Next

' If CustomerList is a list of Customer objects,
' variable cust is an instance of the Customer class.
For Each cust In CustomerList
    Console.WriteLine(cust.Name)
Next

' Variable namedCust is an instance of the Customer class.
Dim namedCust = New Customer With {.Name = "Lance Tucker", _
                                   .City = "Seattle"}

' Variable product is an instance of an anonymous type.
Dim product = New With {Key .Name = "paperclips", Key .Price = 1.29}

' If customers is a collection of Customer objects in the following 
' query, the inferred type of cust is Customer, and the inferred type
' of custs is IEnumerable(Of Customer).
Dim custs = From cust In customers _
            Where cust.City = "Seattle" _
            Select cust.Name, cust.ID

参照

概念

ローカル型の推論

参照

Dim ステートメント (Visual Basic)

Option Compare ステートメント

Option Explicit ステートメント (Visual Basic)

Option Strict ステートメント

[Visual Basic の既定値] ([オプション] ダイアログ ボックス - [プロジェクト])

/optioninfer