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 BasicVisual 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. 자세한 내용은 참조 암시적 변환과 명시적 변환확장 변환과 축소 변환합니다.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. 자세한 내용은의 "축소 변환" 섹션을 참조 하십시오. 각각에 대해... 다음 문합니다.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 문에서 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

확대 변환과 축소 변환Widening and Narrowing Conversions
암시적 변환과 명시적 변환Implicit and Explicit Conversions
프로젝트 디자이너, 컴파일 페이지(Visual Basic)Compile Page, Project Designer (Visual Basic)
Option Explicit 문Option Explicit Statement
형식 변환 함수Type Conversion Functions
방법: 개체의 멤버에 액세스How to: Access Members of an Object
XML의 포함 식Embedded Expressions in XML
완화된 대리자 변환Relaxed Delegate Conversion
Office 솔루션에서 런타임에 바인딩Late Binding in Office Solutions
/optionstrict/optionstrict
옵션 대화 상자, 프로젝트, Visual Basic 기본값Visual Basic Defaults, Projects, Options Dialog Box