LongOption Strict Statement

암시적 데이터 형식 변환을 확대 변환 으로만 제한 하 고 런타임에 바인딩을 허용 하지 않습니다.에 이어지는 암시적 형식 지정을 허용 하지 않습니다는 Object 형식입니다.Restricts implicit data type conversions to only widening conversions, disallows late binding, and disallows implicit typing that results in an Object type.

구문Syntax

Option Strict { On | Off }  

요소Parts

용어Term 정의Definition
On 선택 사항입니다.Optional. 사용 하도록 설정 Option Strict 확인 합니다.Enables Option Strict checking.
Off 선택 사항입니다.Optional. 사용 하지 않도록 설정 Option Strict 확인 합니다.Disables Option Strict checking.

설명Remarks

Option Strict On 또는 Option Strict 나타납니다 파일에서 다음과 같은 컴파일 타임 오류가 발생 합니다.When Option Strict On or Option Strict appears in a file, the following conditions cause a compile-time error:

  • 암시적 축소 변환Implicit narrowing conversions

  • 런타임에 바인딩Late binding

  • Object 유형으로 이어지는 암시적 형식 지정Implicit typing that results in an Object type

참고

에 설정할 수 있는 경고 구성에는 컴파일 페이지, 프로젝트 디자이너 (Visual Basic), 컴파일 시간 오류가 발생 하는 세 가지 조건에 해당 하는 세 가지 설정이 있습니다.In the warning configurations that you can set on the Compile Page, Project Designer (Visual Basic), there are three settings that correspond to the three conditions that cause a compile-time error. 이러한 설정을 사용 하는 방법에 대 한 정보를 참조 하세요 IDE에 경고 구성을 설정 하려면 이 항목의 뒷부분에 나오는.For information about how to use these settings, see To set warning configurations in the IDE later in this topic.

Option Strict Off 문을 해제 오류 및 경고 확인 세 조건을 모두 연결 된 IDE 설정 오류 또는 경고를 설정 하도록 지정 하는 경우에 합니다.The Option Strict Off statement turns off error and warning checking for all three conditions, even if the associated IDE settings specify to turn on these errors or warnings. Option Strict On 이러한 오류나 경고를 해제 하 여 연결 된 IDE 설정 지정 하는 경우에 오류 및 경고 확인 세 조건을 모두 문을 설정 합니다.The Option Strict On statement turns on error and warning checking for all three conditions, even if the associated IDE settings specify to turn off these errors or warnings.

를 사용 하는 경우는 Option Strict 문을 파일에 다른 코드 문 앞에 나타나야 합니다.If used, the Option Strict statement must appear before any other code statements in a file.

설정한 경우 Option StrictOn, Visual Basic에서는 모든 프로그래밍 요소에 대해 지정 되어 있는지 확인 합니다.When you set Option Strict to On, Visual Basic checks that data types are specified for all programming elements. 데이터 형식은 명시적으로 지정 된 또는 로컬 형식 유추를 사용 하 여 지정할 수 있습니다.Data types can be specified explicitly, or specified by using local type inference. 모든 프로그래밍 요소에 대 한 데이터 형식을 지정 하는 것이 좋습니다, 다음과 같은 이유로:Specifying data types for all your programming elements is recommended, for the following reasons:

  • 프로그램 변수 및 매개 변수에 대 한 IntelliSense 지원도를 수 있습니다.It enables IntelliSense support for your variables and parameters. 이 옵션을 사용 하면 코드를 입력할 때 해당 속성 및 다른 구성원을 볼 수 있습니다.This enables you to see their properties and other members as you type code.

  • 컴파일러를에 형식 검사를 수행할 수 있습니다.It enables the compiler to perform type checking. 형식 검사 형식 변환 오류로 인해 런타임에 실패할 수 있는 문을 찾는 데 도움이 됩니다.Type checking helps you find statements that can fail at run time because of type conversion errors. 또한 이러한 메서드를 지원 하지 않는 개체에서 메서드 호출을 식별 합니다.It also identifies calls to methods on objects that do not support those methods.

  • 이 코드의 실행 속도 높입니다.It speeds up the execution of code. 그 이유 중 하나는 프로그래밍 요소에 대 한 데이터 형식을 지정 하지 않으면, Visual Basic 컴파일러를 할당 하는 Object 형식입니다.One reason for this is that if you do not specify a data type for a programming element, the Visual Basic compiler assigns it the Object type. 컴파일된 코드 사이 변환 해야 할 수 Object 및 다른 데이터 형식을 사용 하면 성능이 저하 됩니다.Compiled code might have to convert back and forth between Object and other data types, which reduces performance.

암시적 축소 변환 오류Implicit Narrowing Conversion Errors

암시적 축소 변환 오류는 축소 변환인 암시적 데이터 형식 변환이 있을 경우 발생합니다.Implicit narrowing conversion errors occur when there is an implicit data type conversion that is a narrowing conversion.

Visual Basic 다른 데이터 형식으로 다양 한 데이터 형식을 변환할 수 있습니다.Visual Basic can convert many data types to other data types. 데이터 형식의 값을 정밀도 나 용량이 있는 데이터 형식으로 변환 되 면 데이터 손실이 발생할 수 있습니다.Data loss can occur when the value of one data type is converted to a data type that has less precision or a smaller capacity. 축소 변환이 실패 하면 런타임 오류가 발생 합니다.A run-time error occurs if such a narrowing conversion fails. Option Strict 사용 하면 컴파일 시간 알림이 이러한 축소 변환을 방지 하는 합니다.Option Strict ensures compile-time notification of these narrowing conversions so that you can avoid them. 자세한 내용은 암시적 변환과 명시적 변환 하 고 Widening and Narrowing Conversions합니다.For more information, see Implicit and Explicit Conversions and Widening and Narrowing Conversions.

변환 오류를 일으킬 수 있는 식에서 발생 하는 암시적 변환이 포함 됩니다.Conversions that can cause errors include implicit conversions that occur in expressions. 자세한 내용은 다음 항목을 참조하세요.For more information, see the following topics:

사용 하 여 문자열을 연결 하는 & 연산자, 모든 문자열 변환을 확대 될 것으로 간주 됩니다.When you concatenate strings by using the & Operator, all conversions to the strings are considered to be widening. 암시적 축소 변환 오류를 경우에도 이러한 변환이 생성 되지 않습니다 있도록 Option Strict 켜져 있습니다.So these conversions do not generate an implicit narrowing conversion error, even if Option Strict is on.

해당 매개 변수에서 다른 데이터 형식을 갖는 인수를 사용 하는 메서드를 호출 하면 축소 변환 하면 컴파일 타임 오류 Option Strict 켜져 있습니다.When you call a method that has an argument that has a data type different from the corresponding parameter, a narrowing conversion causes a compile-time error if Option Strict is on. 확대 변환 또는 변환 하는 명시적 변환을 사용 하 여 컴파일 타임 오류를 방지할 수 있습니다.You can avoid the compile-time error by using a widening conversion or an explicit conversion.

암시적 축소 변환 오류 요소에서 변환에 대 한 컴파일 타임에 표시 되지 않습니다는 For Each…Next 루프 제어 변수 컬렉션입니다.Implicit narrowing conversion errors are suppressed at compile-time for conversions from the elements in a For Each…Next collection to the loop control variable. 이런 경우에 Option Strict 켜져 있습니다.This occurs even if Option Strict is on. 자세한 내용은 "Narrowing Conversions" 섹션을 참조 하세요. 각각에 대 한 중... 다음 문을합니다.For more information, see the "Narrowing Conversions" section in For Each...Next Statement.

런타임에 바인딩 오류Late Binding Errors

개체에 Object 형식으로 선언된 변수의 속성 또는 메서드에 할당되면 런타임에 바인딩됩니다.An object is late bound when it is assigned to a property or method of a variable that is declared to be of type Object. 자세한 내용은 초기 바인딩 및 런타임에 바인딩합니다.For more information, see Early and Late Binding.

암시적 개체 형식 오류Implicit Object Type Errors

암시적 개체 형식 오류는 선언된 변수에 대해 적절한 형식이 유추될 수 없어 Object의 형식이 유추될 때 발생합니다.Implicit object type errors occur when an appropriate type cannot be inferred for a declared variable, so a type of Object is inferred. 주로 As 절을 사용하지 않고 Dim 문을 사용하여 변수를 선언하고, Option Infer가 꺼져 있는 경우 발생합니다.This primarily occurs when you use a Dim statement to declare a variable without using an As clause, and Option Infer is off. 자세한 내용은 Option Infer 문 하며 Visual Basic 언어 사양합니다.For more information, see Option Infer Statement and the Visual Basic Language Specification.

메서드 매개 변수에 대 한 합니다 As 절은 선택 사항 경우 Option Strict 꺼져 있습니다.For method parameters, the As clause is optional if Option Strict is off. 그러나 하나의 매개 변수를 사용 하는 경우는 As 절을 모두 사용 해야 합니다.However, if any one parameter uses an As clause, they all must use it. 경우 Option Strict 가 on으로 설정 된 As 절은 모든 매개 변수 정의 대 한 필수입니다.If Option Strict is on, the As clause is required for every parameter definition.

사용 하지 않고 변수를 선언 하는 경우는 As 절으로 설정 하 고 Nothing, 변수의 형식이 Object합니다.If you declare a variable without using an As clause and set it to Nothing, the variable has a type of Object. 컴파일 타임 오류가 발생 하지 않는 경우에 경우 Option Strict 켜져 및 Option Infer 켜져 있습니다.No compile-time error occurs in this case when Option Strict is on and Option Infer is on. 이러한 예로 Dim something = Nothing합니다.An example of this is Dim something = Nothing.

기본 데이터 형식 및 값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.

Option Strict 문은 현재 없는 경우When an Option Strict Statement Is Not Present

소스 코드에 없는 경우는 Option Strict 문을 Option strict 에 설정 합니다 컴파일 페이지, 프로젝트 디자이너 (Visual Basic) 사용 됩니다.If the source code does not contain an Option Strict statement, the Option strict setting on the Compile Page, Project Designer (Visual Basic) is used. 합니다 컴파일 페이지 오류를 생성 하는 조건에 대 한 추가 제어를 제공 하는 설정이 있습니다.The Compile Page has settings that provide additional control over the conditions that generate an error.

명령줄 컴파일러를 사용 하는 경우 사용할 수 있습니다 합니다 /optionstrict 컴파일러 옵션에 대 한 설정을 지정 하려면 Option Strict합니다.If you are using the command-line compiler, you can use the /optionstrict compiler option to specify a setting for Option Strict.

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

참고

일부 Visual Studio 사용자 인터페이스 요소의 경우 다음 지침에 설명된 것과 다른 이름 또는 위치가 시스템에 표시될 수 있습니다.Your computer might show different names or locations for some of the Visual Studio user interface elements in the following instructions. 이러한 요소는 사용하는 Visual Studio 버전 및 설정에 따라 결정됩니다.The Visual Studio edition that you have and the settings that you use determine these elements. 자세한 내용은 IDE 개인 설정을 참조하세요.For more information, see Personalizing the IDE.

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

  2. 컴파일 탭의 값을 설정 합니다 Option Strict 상자입니다.On the Compile tab, set the value in the Option Strict box.

IDE에서 경고 구성을 설정 하려면To set warning configurations in the IDE

사용 하는 경우는 컴파일 페이지, 프로젝트 디자이너 (Visual Basic) 대신는 Option Strict 문을 제어할 수 추가 오류를 생성 하는 조건입니다.When you use the Compile Page, Project Designer (Visual Basic) instead of an Option Strict statement, you have additional control over the conditions that generate errors. 경고 구성 섹션을 컴파일 페이지 컴파일 타임 오류가 발생 하는 세 가지 조건에 해당 하는 설정이 때 Option Strict 켜져 합니다.The Warning configurations section of the Compile Page has settings that correspond to the three conditions that cause a compile-time error when Option Strict is on. 이러한 설정은 다음과 같습니다.Following are these settings:

  • 암시적 변환Implicit conversion

  • 런타임에 바인딩; 호출이 실패할 수 있음Late binding; call could fail at run time

  • 암시적 형식; 개체로 간주Implicit type; object assumed

Option StrictOn으로 설정하는 경우 이러한 세 가지 경고 구성 설정은 모두 Error로 설정됩니다.When you set Option Strict to On, all three of these warning configuration settings are set to Error. Option StrictOff로 설정하는 경우 세 가지 설정은 모두 None으로 설정됩니다.When you set Option Strict to Off, all three settings are set to None.

각 경고 구성 설정은 None, Warning 또는 Error로 개별적으로 변경할 수 있습니다.You can individually change each warning configuration setting to None, Warning, or Error. 세 가지 경고 구성 설정이 모두 Error로 설정된 경우 OnOption strict 상자에 표시됩니다.If all three warning configuration settings are set to Error, On appears in the Option strict box. 세 가지 모두 None으로 설정된 경우 Off가 이 상자에 표시됩니다.If all three are set to None, Off appears in this box. 이러한 설정의 다른 조합의 경우 (사용자 지정) 이 나타납니다.For any other combination of these settings, (custom) appears.

새 프로젝트의 Option Strict 기본 설정을 설정 하려면To set the Option Strict default setting for new projects

프로젝트를 만들 때를 Option Strict 에 설정 합니다 컴파일 탭으로 설정 됩니다는 Option Strict 에서 설정를 옵션 대화 상자입니다.When you create a project, the Option Strict setting on the Compile tab is set to the Option Strict setting in the Options dialog box.

설정할 Option Strict 이 대화 상자에서에 도구 메뉴에서 클릭 옵션합니다.To set Option Strict in this dialog box, on the Tools menu, click Options. 옵션 대화 상자에서 프로젝트 및 솔루션을 확장하고 VB 기본값을 클릭합니다.In the Options dialog box, expand Projects and Solutions, and then click VB Defaults. 초기 기본 설정은 VB 기본값Off합니다.The initial default setting in VB Defaults is Off.

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

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

예제Example

다음 예제에서는 암시적 형식 변환 하는 축소 변환에 의해 발생 한 컴파일 시간 오류를 보여 줍니다.The following examples demonstrate compile-time errors caused by implicit type conversions that are narrowing conversions. 이 범주의 오류에 해당 하는 암시적으로 변환 조건에 컴파일 페이지합니다.This category of errors corresponds to the Implicit conversion condition on the Compile Page.

' 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

예제Example

다음 예제에서는 런타임에 바인딩 인해 컴파일 시간 오류를 보여 줍니다.The following example demonstrates a compile-time error caused by late binding. 이 범주의 오류에 해당 하는 늦게 바인딩; 호출이 런타임에 실패할 수 있음 조건에 컴파일 페이지합니다.This category of errors corresponds to the Late binding; call could fail at run time condition on the Compile Page.

' 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

예제Example

다음 예제에서는 암시적 유형으로 선언 된 변수에 의해 발생 한 오류를 보여 줍니다. Object합니다.The following examples demonstrate errors caused by variables that are declared with an implicit type of Object. 이 범주의 오류에 해당 하는 암시적 형식; 개체로 간주 조건에 컴파일 페이지합니다.This category of errors corresponds to the Implicit type; object assumed condition on the Compile Page.

' 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

참고자료See also