Option Infer ステートメント
更新 : 2007 年 11 月
変数の宣言に対するローカル型の推論の使用を有効にします。
Option Infer { On | Off }
指定項目
On
省略可能です。ローカル型の推論を有効にします。Off
省略可能です。ローカル型の推論を無効にします。
メモ : |
---|
On または Off の指定がない場合、Visual Basic 2008 で作成されるプロジェクトの既定値は On になります。以前のバージョンからアップグレードされたプロジェクトの既定値は Off になります。 |
解説
Option Infer を On に設定すると、明示的にデータ型を指定せずに変数を宣言できます。コンパイラは変数のデータ型を初期化式の型から推論します。たとえば、Option Infer と Option Strict を無効にすると、Dim someVar = 2 宣言内の変数は、オブジェクトとしてのみ識別されます。
Option Infer と Option Strict が無効な場合の IntelliSense
Option Infer を On に設定すると、コンパイラは、someVar をInteger として識別します。
Option Infer が有効な場合の IntelliSense
この後、コンパイラは、プロジェクトが実行されるまでは認識されない可能性がある、プロジェクト内の変数の不整合を検出できます。someVar の Integer としての識別も、統合開発環境 (IDE: Integrated Development Environment) での IntelliSense の完全なサポートを可能にします。
メモ : |
---|
コードまたは IDE で Option Infer に値の指定がない場合、新規作成されるプロジェクトに対するコンパイラの既定値は Option Infer On になります。アップグレードされたプロジェクトの既定値は Option Infer Off になります。 |
メモ : |
---|
お使いのマシンで、Visual Studio ユーザー インターフェイスの一部の要素の名前や場所が、次の手順とは異なる場合があります。これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。詳細については、「Visual Studio の設定」を参照してください。 |
Option Infer をファイルに設定するには
- ファイルの先頭の、他のソース コードの前に、Option Infer On または Option Infer Off を入力します。ファイル内の Option Infer の設定値が、IDE またはコマンド ラインでの設定値と競合する場合は、ファイル内の値が優先します。
IDE で単一のプロジェクトに対して Option Infer を設定するには
ソリューション エクスプローラでプロジェクトを選択します。
[表示] メニューの [プロパティ ページ] をクリックして、プロジェクト デザイナを開きます。
[コンパイル] タブで、[Option Infer] ボックスの一覧の [On] または [Off] をクリックします。
IDE で Option Infer の既定値を設定するには
[ツール] メニューの [オプション] をクリックします。
[プロジェクトおよびソリューション] ノードを展開します。
[Visual Basic の既定値] をクリックします。
[Option Infer] ボックスの一覧の [On] または [Off] をクリックします。
メモ : 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
参照
概念
参照
Option Explicit ステートメント (Visual Basic)