수색…


이게 뭐야?

변수를 선언 할 때 로컬 형식 유추를 사용할 수 있습니다.

타입 유추 란 무엇입니까?

명시 적으로 데이터 유형을 언급하지 않고 지역 변수를 선언 할 수 있습니다. 컴파일러는 변수의 데이터 형식을 초기화 식의 형식에서 유추합니다.

Option Infer On :

Dim aString  = "1234" '--> Will be treated as String by the compiler
Dim aNumber  = 4711   '--> Will be treated as Integer by the compiler

명시 적 유형 선언과 비교 :

'State a type explicitly
Dim aString as String = "1234"
Dim aNumber as Integer = 4711

Option Infer Off :
Option Infer Off 사용하는 컴파일러 동작은 이미 여기 에 설명 된 Option Strict 설정에 따라 다릅니다.

  • Option Infer Off - 옵션 Strict Off
    명시 적 타입 선언이없는 모든 변수는 Object 로 선언됩니다.

    Dim aString  = "1234" '--> Will be treated as Object by the compiler
    
  • Option Infer Off - 옵션 Strict On
    컴파일러는 명시 적 유형이없는 변수를 선언 할 수 없습니다.

    'Dim aString  = "1234" '--> Will not compile due to missing type in declaration
    

사용 / 사용 중지 방법

문서 수준

기본적으로 켜져 있지만 코드 파일 맨 위에 Option Infer On|Off 를 설정하여 설정할 수 있습니다. 이 옵션은 전체 문서에 적용됩니다.

프로젝트 수준

Visual Studio의 메뉴를 통해이 기능을 켜거나 끌 수 있습니다.

프로젝트> [프로젝트] 속성> 컴파일 탭> 옵션 추론

드롭 다운 메뉴에서 On|Off 를 선택하십시오. 이 옵션은 전체 문서에 적용됩니다.

모든 새 프로젝트

다음을 선택하여 모든 새 프로젝트에 기본적으로 켤 수 있습니다.

도구> 옵션> 프로젝트 및 솔루션> VB 기본값> Option Infer

드롭 다운 메뉴에서 On|Off 를 선택하십시오.

형식 유추를 사용해야하는 경우

가능하다면 기본적으로 타입 유추를 사용할 수 있습니다.
그러나 Option Infer OffOption Strict Off 조합 할 때주의해야합니다. 이렇게하면 바람직하지 않은 런타임 동작이 발생할 수 있습니다.

Dim someVar = 5
someVar.GetType.ToString() '--> System.Int32
someVar = "abc"
someVar.GetType.ToString() '--> System.String

익명 유형
익명 형식은 Option Infer On 선언 할 있습니다.
LINQ를 다룰 때 자주 사용됩니다.

Dim countryCodes = New List(Of String)
countryCodes.Add("en-US")
countryCodes.Add("en-GB")
countryCodes.Add("de-DE")
countryCodes.Add("de-AT")

Dim q = From code In countryCodes
        Let split = code.Split("-"c)
        Select New With {.Language = split(0), .Country = split(1)}
  • 옵션 추측
    컴파일러는 익명 형식을 인식합니다. 익명 형식 - 옵션 추측

  • Option Infer Off
    컴파일러에서 오류를 throw하거나 ( Option Strict On )
    또는 q 를 유형 object ( Option Strict Off )로 간주 object .
    두 경우 모두 익명 형식을 사용할 수없는 결과가 생성됩니다.


복식 / 소수 자릿수
소수 자릿수가있는 숫자 변수는 기본적으로 Double 로 유추됩니다.

Dim aNumber = 44.11 '--> Will be treated as type `Double` by the compiler

Decimal 과 같은 다른 유형이 필요한 경우 변수를 초기화 한 값을 표시해야합니다.

Dim mDecimal = 47.11D '--> Will be treated as type `Decimal` by the compiler


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow