Option Infer 문Option Infer Statement

변수를 선언할 때 지역 형식 유추를 사용하도록 설정합니다.Enables the use of local type inference in declaring variables.

구문Syntax

Option Infer { On | Off }  

요소Parts

용어Term 정의Definition
On 선택 사항입니다.Optional. 지역 형식 유추를 사용하도록 설정합니다.Enables local type inference.
Off 선택 사항입니다.Optional. 지역 형식 유추를 사용하지 않도록 설정합니다.Disables local type inference.

설명Remarks

파일에서 Option Infer를 설정하려면 파일 맨 위(기타 모든 소스 코드 앞)에 Option Infer On 또는 Option Infer Off를 입력합니다.To set Option Infer in a file, type Option Infer On or Option Infer Off at the top of the file, before any other source code. 파일에서 Option Infer에 대해 설정된 값이 IDE 또는 명령줄에 설정된 값과 충돌하는 경우에는 파일의 값이 우선적으로 적용됩니다.If the value set for Option Infer in a file conflicts with the value set in the IDE or on the command line, the value in the file has precedence.

Option InferOn으로 설정하면 데이터 형식을 명시적으로 설명하지 않고 로컬 변수를 선언할 수 있습니다.When you set Option Infer to On, you can declare local variables without explicitly stating a data type. 컴파일러는 초기화 식의 형식에서 변수의 데이터 형식을 유추합니다.The compiler infers the data type of a variable from the type of its initialization expression.

다음 그림에서는 Option Infer가 설정되어 있습니다.In the following illustration, Option Infer is turned on. Dim someVar = 2 선언의 변수는 형식 유추에 의해 정수로 선언됩니다.The variable in the declaration Dim someVar = 2 is declared as an integer by type inference.

선언의 IntelliSense 보기입니다. IntelliSense view of the declaration.
Option Infer가 설정된 경우의 IntelliSenseIntelliSense when Option Infer is on

다음 그림에서는 Option Infer가 해제되어 있습니다.In the following illustration, Option Infer is turned off. Dim someVar = 2 선언의 변수는 형식 유추에 의해 Object로 선언됩니다.The variable in the declaration Dim someVar = 2 is declared as an Object by type inference. 이 예제에서는 합니다 Option Strict 로 설정 되어 해제컴파일 페이지, 프로젝트 디자이너 (Visual Basic)합니다.In this example, the Option Strict setting is set to Off on the Compile Page, Project Designer (Visual Basic).

선언의 IntelliSense 보기입니다. IntelliSense view of the declaration.
Option Infer가 해제된 경우의 IntelliSenseIntelliSense when Option Infer is off

참고

변수가 Object로 선언되면 프로그램을 실행하는 동안 런타임 형식이 변경될 수 있습니다.When a variable is declared as an Object, the run-time type can change while the program is running. 작업을 수행 하는 Visual Basic boxing 하 고 unboxing 간에 변환 하는 Object 및 값 형식을 실행 속도가 느려집니다.Visual Basic performs operations called boxing and unboxing to convert between an Object and a value type, which makes execution slower. Boxing 및 unboxing에 대 한 내용은 참조는 Visual Basic 언어 사양합니다.For information about boxing and unboxing, see the Visual Basic Language Specification.

형식 유추는 프로시저 수준에서 적용되며 클래스, 구조체, 모듈 또는 인터페이스의 프로시저 외부에는 적용되지 않습니다.Type inference applies at the procedure level, and does not apply outside a procedure in a class, structure, module, or interface.

자세한 내용은 참조 하세요. 로컬 형식 유추합니다.For additional information, see Local Type Inference.

Option Infer 문이 없는 경우When an Option Infer Statement Is Not Present

소스 코드에 없는 경우는 Option Infer 문을 Option Infer 에 설정 합니다 컴파일 페이지, 프로젝트 디자이너 (Visual Basic) 사용 됩니다.If the source code does not contain an Option Infer statement, the Option Infer setting on the Compile Page, Project Designer (Visual Basic) is used. 명령줄 컴파일러를 사용 하는 경우는 /optioninfer 컴파일러 옵션을 사용 합니다.If the command-line compiler is used, the /optioninfer compiler option is used.

IDE에서 Option Infer를 설정하려면To set Option Infer in the IDE

  1. 솔루션 탐색기에서 프로젝트를 선택합니다.In Solution Explorer, select a project. 프로젝트 메뉴에서 속성을 클릭합니다.On the Project menu, click Properties.

  2. 컴파일 탭을 클릭합니다.Click the Compile tab.

  3. 값을 설정 합니다 Option infer 상자입니다.Set the value in the Option infer box.

새 프로젝트를 만들 때를 Option Infer 에 설정 합니다 컴파일 탭으로 설정 됩니다는 Option Infer 에서 설정를 VB 기본값 대화 상자입니다.When you create a new project, the Option Infer setting on the Compile tab is set to the Option Infer setting in the VB Defaults dialog box. 액세스 하는 VB 기본값 대화 상자의 합니다 도구 메뉴에서 클릭 옵션.To access the VB Defaults dialog box, on the Tools menu, click Options. 옵션 대화 상자에서 프로젝트 및 솔루션을 확장하고 VB 기본값을 클릭합니다.In the Options dialog box, expand Projects and Solutions, and then click VB Defaults. 초기 기본 설정은 VB 기본값On합니다.The initial default setting in VB Defaults is On.

명령줄에서 Option Infer를 설정하려면To set Option Infer on the command line

  • 포함 된 /optioninfer 컴파일러 옵션을 vbc 명령.Include the /optioninfer compiler option in the vbc command.

기본 데이터 형식 및 값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가 off(기본값)이면 변수는 Nothing으로 설정됩니다.If Option Strict is off (the default), the variable is set to Nothing.

Option Strict가 on이면 컴파일 타임 오류가 발생합니다.If Option Strict is on, a compile-time error occurs.
아니요No Yes Dim qty = 5 Option Infer가 on(기본값)이면 변수가 이니셜라이저의 데이터 형식을 사용합니다.If Option Infer is on (the default), the variable takes the data type of the initializer. 참조 지역 형식 유추합니다.See Local Type Inference.

Option Infer가 off이고 Option Strict고 off이면 변수가 Object의 데이터 형식을 사용합니다.If Option Infer is off and Option Strict is off, the variable takes the data type of Object.

Option Infer가 off이고 Option Strict는 on이면 컴파일 타임 오류가 발생합니다.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.

예제Example

다음 예제에서는 Option Infer 문이 지역 형식 유추를 사용하도록 설정하는 방법을 보여 줍니다.The following examples demonstrate how the Option Infer statement enables local type inference.

' 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

' Variable item is a string.
Dim lst As New List(Of String) From {"abc", "def", "ghi"}

For Each item In lst
    Console.WriteLine(item)
Next

' Variable namedCust is an instance of the Customer class.
Dim namedCust = New Customer With {.Name = "Blue Yonder Airlines",
                                   .City = "Snoqualmie"}

' Variable product is an instance of an anonymous type.
Dim product = New With {Key .Name = "paperclips", .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

예제Example

다음 예제에서는 변수가 Object로 식별되는 경우 런타임 형식이 달라질 수 있음을 보여 줍니다.The following example demonstrates that the run-time type can differ when a variable is identified as an Object.

' Disable Option Infer when trying this example.

Dim someVar = 5
Console.WriteLine(someVar.GetType.ToString)

' If Option Infer is instead enabled, the following
' statement causes a run-time error. This is because
' someVar was implicitly defined as an integer.
someVar = "abc"
Console.WriteLine(someVar.GetType.ToString)

' Output:
'  System.Int32
'  System.String

참고 항목See Also

Dim 문Dim Statement
지역 형식 유추Local Type Inference
Option Compare 문Option Compare Statement
Option Explicit 문Option Explicit Statement
Option Strict 문Option Strict Statement
옵션 대화 상자, 프로젝트, Visual Basic 기본값Visual Basic Defaults, Projects, Options Dialog Box
/optioninfer/optioninfer
boxing 및 unboxingBoxing and Unboxing