Option Strict 문

암시적 데이터 형식 변환을 확대 변환으로 제한하고, 런타임에 바인딩을 허용하지 않으며, 형식을 생성하는 Object 암시적 입력을 허용하지 않습니다.

구문

Option Strict { On | Off }

부분

용어 정의
On 선택 사항입니다. 검사를 사용하도록 Option Strict 설정합니다.
Off (선택 사항) 검사를 사용하지 Option Strict 않도록 설정합니다.

설명

Option Strict On 파일에 표시되거나 Option Strict 파일에 표시되면 다음 조건으로 인해 컴파일 시간 오류가 발생합니다.

  • 암시적 축소 변환

  • 런타임에 바인딩

  • Object 유형으로 이어지는 암시적 형식 지정

참고

컴파일 페이지 Project 디자이너(Visual Basic)에서 설정할 수 있는 경고 구성에는 컴파일 시간 오류를 발생시키는 세 가지 조건에 해당하는 세 가지 설정이 있습니다. 이러한 설정을 사용하는 방법에 대한 자세한 내용은 이 항목의 뒷부분에 있는 IDE에서 경고 구성을 설정하려면 을 참조하세요.

이 문은 Option Strict Off 연결된 IDE 설정이 이러한 오류 또는 경고를 설정하도록 지정하더라도 세 가지 조건 모두에 대한 오류 및 경고 검사를 해제합니다. 이 문은 Option Strict On 연결된 IDE 설정이 이러한 오류 또는 경고를 해제하도록 지정하는 경우에도 세 가지 조건 모두에 대한 오류 및 경고 검사를 설정합니다.

사용하는 경우 해당 문이 파일의 Option Strict 다른 코드 문 앞에 나타나야 합니다.

설정 Option StrictOn하면 Visual Basic 모든 프로그래밍 요소에 대해 데이터 형식이 지정되어 있는지 확인합니다. 데이터 형식은 명시적으로 지정하거나 로컬 형식 유추를 사용하여 지정할 수 있습니다. 다음과 같은 이유로 모든 프로그래밍 요소에 대한 데이터 형식을 지정하는 것이 좋습니다.

  • 이를 통해 변수 및 매개 변수에 대한 IntelliSense 지원을 사용할 수 있습니다. 이렇게 하면 코드를 입력할 때 해당 속성 및 다른 멤버를 볼 수 있습니다.

  • 컴파일러에서 형식 검사를 수행할 수 있습니다. 형식 검사를 사용하면 형식 변환 오류로 인해 런타임에 실패할 수 있는 문을 찾을 수 있습니다. 또한 이러한 메서드를 지원하지 않는 개체의 메서드에 대한 호출을 식별합니다.

  • 코드 실행 속도를 향상합니다. 한 가지 이유는 프로그래밍 요소에 대한 데이터 형식을 지정하지 않으면 Visual Basic 컴파일러에서 해당 형식을 할당하기 Object 때문입니다. 컴파일된 코드는 다른 데이터 형식 간에 Object 변환해야 할 수 있으므로 성능이 저하됩니다.

암시적 축소 변환 오류

암시적 축소 변환 오류는 축소 변환인 암시적 데이터 형식 변환이 있을 경우 발생합니다.

Visual Basic 많은 데이터 형식을 다른 데이터 형식으로 변환할 수 있습니다. 데이터 손실은 한 데이터 형식의 값이 정밀도가 낮거나 용량이 작은 데이터 형식으로 변환되는 경우에 발생할 수 있습니다. 이러한 축소 변환이 실패하면 런타임 오류가 발생합니다. Option Strict 는 이러한 축소 변환을 방지할 수 있도록 컴파일 시간 알림을 보장합니다. 자세한 내용은 암시적 및 명시적 변환 및확대 및 축소 변환을 참조하세요.

오류를 일으킬 수 있는 변환에는 식에서 발생하는 암시적 변환이 포함됩니다. 자세한 내용은 다음 항목을 참조하세요.

연산자를 사용하여 &문자열을 연결할 때 문자열로의 모든 변환은 확대되는 것으로 간주됩니다. 따라서 이러한 변환은 켜진 경우에도 Option Strict 암시적 축소 변환 오류를 생성하지 않습니다.

해당 매개 변수와 다른 데이터 형식의 인수가 있는 메서드를 호출하는 경우 축소 변환으로 인해 컴파일 시간 오류가 발생합니다(있는 경우 Option Strict ). 확대 변환 또는 명시적 변환을 사용하여 컴파일 시간 오류를 방지할 수 있습니다.

컬렉션의 요소에서 루프 제어 변수로 변환하기 위해 컴파일 타임에 For Each…Next 암시적 축소 변환 오류가 표시되지 않습니다. 이 오류는 켜진 경우에도 Option Strict 발생합니다. 자세한 내용은 For Each...의 "축소 변환" 섹션을 참조하세요 . 다음 문입니다.

지연 바인딩 오류

개체에 Object 형식으로 선언된 변수의 속성 또는 메서드에 할당되면 런타임에 바인딩됩니다. 자세한 내용은 초기 바인딩 및 지연 바인딩을 참조하세요.

암시적 개체 형식 오류

암시적 개체 형식 오류는 선언된 변수에 대해 적절한 형식이 유추될 수 없어 Object의 형식이 유추될 때 발생합니다. 주로 As 절을 사용하지 않고 Dim 문을 사용하여 변수를 선언하고, Option Infer가 꺼져 있는 경우 발생합니다. 자세한 내용은 Option Infer 문Visual Basic 언어 사양을 참조하세요.

메서드 매개 변수의 경우 절이 As 꺼져 있는 경우 Option Strict 선택 사항입니다. 그러나 하나의 매개 변수가 절을 사용하는 경우 모두 절을 As 사용해야 합니다. 켜진 As 경우 Option Strict 절은 모든 매개 변수 정의에 필요합니다.

절을 사용하지 않고 변수를 As 선언하고 변수로 Nothing설정하면 변수의 Object형식이 입니다. 이 경우 켜지고 Option Infer 있는 경우 Option Strict 컴파일 시간 오류가 발생하지 않습니다. 예를 들면 다음과 같습니다 Dim something = Nothing.

기본 데이터 형식 및 값

다음 표에서는 Dim 문에서 데이터 형식 및 이니셜라이저를 지정하는 다양한 조합의 결과를 설명합니다.

데이터 형식 지정 여부 이니셜라이저 지정 여부 예제 결과
아니요 Dim qty Option Strict가 off(기본값)이면 변수는 Nothing으로 설정됩니다.

Option Strict가 on이면 컴파일 시간 오류가 발생합니다.
Dim qty = 5 Option Infer가 on(기본값)이면 변수가 이니셜라이저의 데이터 형식을 사용합니다. 로컬 형식 유추를 참조하세요.

Option Infer가 off이고 Option Strict고 off이면 변수가 Object의 데이터 형식을 사용합니다.

Option Infer가 off이고 Option Strict는 on이면 컴파일 시간 오류가 발생합니다.
Dim qty As Integer 변수는 데이터 형식의 기본값으로 초기화됩니다. 자세한 내용은 Dim 문을 참조하세요.
Dim qty As Integer = 5 이니셜라이저의 데이터 형식을 지정한 데이터 형식으로 변환할 수 없으면 컴파일 시간 오류가 발생합니다.

Option Strict 문이 없는 경우

소스 코드에 문이 없 Option Strict 으면 컴파일 페이지, Project 디자이너(Visual Basic)Option strict 설정이 사용됩니다. 컴파일 페이지에는 오류를 생성하는 조건에 대한 추가 제어를 제공하는 설정이 있습니다.

명령줄 컴파일러를 사용하는 경우 -optionstrict 컴파일러 옵션을 사용하여 설정을 지정할 Option Strict수 있습니다.

IDE에서 Option Strict를 설정하려면

참고

일부 Visual Studio 사용자 인터페이스 요소의 경우 다음 지침에 설명된 것과 다른 이름 또는 위치가 시스템에 표시될 수 있습니다. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다. 자세한 내용은 IDE 개인 설정을 참조하세요.

  1. 솔루션 탐색기에서 프로젝트를 선택합니다. 프로젝트 메뉴에서 속성을 클릭합니다.

  2. 컴파일 탭의 옵션 Strict 상자에 값을 설정합니다.

IDE에서 경고 구성을 설정하려면

문 대신 Option Strict컴파일 페이지 Project 디자이너(Visual Basic)를 사용하면 오류를 생성하는 조건을 추가로 제어할 수 있습니다. 컴파일 페이지의경고 구성 섹션에는 컴파일 시간 오류가 Option Strict 발생하는 세 가지 조건에 해당하는 설정이 있습니다. 이러한 설정은 다음과 같습니다.

  • 암시적 변환

  • 런타임에 바인딩; 호출이 실패할 수 있음

  • 암시적 형식; 개체로 간주

Option StrictOn으로 설정하는 경우 이러한 세 가지 경고 구성 설정은 모두 Error로 설정됩니다. Option StrictOff로 설정하는 경우 세 가지 설정은 모두 None으로 설정됩니다.

각 경고 구성 설정은 None, Warning 또는 Error로 개별적으로 변경할 수 있습니다. 세 가지 경고 구성 설정이 모두 Error로 설정된 경우 OnOption strict 상자에 표시됩니다. 세 가지 모두 None으로 설정된 경우 Off가 이 상자에 표시됩니다. 이러한 설정의 다른 조합의 경우 (사용자 지정)이 나타납니다.

새 프로젝트에 대한 Option Strict 기본 설정을 설정하려면

프로젝트를 만들면 [컴파일] 탭의 [옵션 엄격] 설정이 [옵션] 대화 상자의 [옵션 엄격] 설정으로 설정됩니다.

이 대화 상자에서 설정 Option Strict 하려면 도구 메뉴에서 옵션을 클릭합니다. 옵션 대화 상자에서 프로젝트 및 솔루션을 확장하고 VB 기본값을 클릭합니다. VB 기본값의 초기 기본 설정은 .입니다Off.

명령줄에서 Option Strict를 설정하려면

vbc 명령에 -optionstrict 컴파일러 옵션을 포함합니다.

예제 1

다음 예제에서는 변환 범위를 좁히는 암시적 형식 변환으로 인한 컴파일 시간 오류를 보여 줍니다. 이 오류 범주는 컴파일 페이지의암시적 변환 조건에 해당합니다.

' 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

예제 2

다음 예제에서는 늦은 바인딩으로 인한 컴파일 시간 오류를 보여 줍니다. 이 오류 범주는 지연 바인딩에 해당합니다. 컴파일 페이지의런타임 조건에서 호출이 실패할 수 있습니다.

' 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

예제 3

다음 예제에서는 암시적 형식 Object으로 선언된 변수로 인한 오류를 보여 줍니다. 이 오류 범주는 암시적 형식에 해당합니다. 컴파일 페이지에서개체가 가정한 조건입니다.

' 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

참고 항목