암시적 변환과 명시적 변환(Visual Basic)Implicit and Explicit Conversions (Visual Basic)

암시적 변환 에는 소스 코드에 특별 한 구문이 필요 하지 않습니다.An implicit conversion does not require any special syntax in the source code. 다음 예제에서는를에 k q할당 하기 전에 Visual Basic의 값을 단 정밀도 부동 소수점 값으로 암시적으로 변환 합니다.In the following example, Visual Basic implicitly converts the value of k to a single-precision floating-point value before assigning it to q.

Dim k As Integer
Dim q As Double
' Integer widens to Double, so you can do this with Option Strict On.
k = 432
q = k

명시적 변환은 형식 변환 키워드를 사용 합니다.An explicit conversion uses a type conversion keyword. Visual Basic는 괄호 안의 식을 원하는 데이터 형식으로 강제 변환 하는 몇 가지 키워드를 제공 합니다.Visual Basic provides several such keywords, which coerce an expression in parentheses to the desired data type. 이러한 키워드는 함수 처럼 동작 하지만 컴파일러가 코드를 인라인으로 생성 하므로 함수 호출을 사용 하는 것 보다 약간 더 빠릅니다.These keywords act like functions, but the compiler generates the code inline, so execution is slightly faster than with a function call.

위의 예에서는 다음 확장에서 키워드는 CInt 를에 k할당 하기 전에 q 값을 다시 정수로 변환 합니다.In the following extension of the preceding example, the CInt keyword converts the value of q back to an integer before assigning it to k.

' q had been assigned the value 432 from k.
q = Math.Sqrt(q)
k = CInt(q)
' k now has the value 21 (rounded square root of 432).

변환 키워드Conversion Keywords

다음 표에서는 사용 가능한 변환 키워드를 보여 줍니다.The following table shows the available conversion keywords.

형식 변환 키워드Type conversion keyword 식을 데이터 형식으로 변환 합니다.Converts an expression to data type 변환할 수 있는 식의 데이터 형식Allowable data types of expression to be converted
CBool Boolean 데이터 형식Boolean Data Type 모든 숫자 형식 (, Byte SByte, 열거형 형식 포함), String,ObjectAny numeric type (including Byte, SByte, and enumerated types), String, Object
CByte Byte 데이터 형식Byte Data Type 모든 숫자 형식 (및 SByte 열거 형식 포함) String, Boolean,,ObjectAny numeric type (including SByte and enumerated types), Boolean, String, Object
CChar Char 데이터 형식Char Data Type String, ObjectString, Object
CDate Date 데이터 형식Date Data Type String, ObjectString, Object
CDbl Double 데이터 형식Double Data Type 모든 숫자 형식 (, Byte SByte Boolean ,String열거형 형식 포함),,,ObjectAny numeric type (including Byte, SByte, and enumerated types), Boolean, String, Object
CDec Decimal 데이터 형식Decimal Data Type 모든 숫자 형식 (, Byte SByte Boolean ,String열거형 형식 포함),,,ObjectAny numeric type (including Byte, SByte, and enumerated types), Boolean, String, Object
CInt Integer 데이터 형식Integer Data Type 모든 숫자 형식 (, Byte SByte Boolean ,String열거형 형식 포함),,,ObjectAny numeric type (including Byte, SByte, and enumerated types), Boolean, String, Object
CLng Long 데이터 형식Long Data Type 모든 숫자 형식 (, Byte SByte Boolean ,String열거형 형식 포함),,,ObjectAny numeric type (including Byte, SByte, and enumerated types), Boolean, String, Object
CObj Object 데이터 형식Object Data Type 모든 형식Any type
CSByte SByte 데이터 형식SByte Data Type 모든 숫자 형식 (및 Byte 열거 형식 포함) String, Boolean,,ObjectAny numeric type (including Byte and enumerated types), Boolean, String, Object
CShort Short 데이터 형식Short Data Type 모든 숫자 형식 (, Byte SByte Boolean ,String열거형 형식 포함),,,ObjectAny numeric type (including Byte, SByte, and enumerated types), Boolean, String, Object
CSng Single 데이터 형식Single Data Type 모든 숫자 형식 (, Byte SByte Boolean ,String열거형 형식 포함),,,ObjectAny numeric type (including Byte, SByte, and enumerated types), Boolean, String, Object
CStr String 데이터 형식String Data Type 모든 숫자 형식 (, Byte SByte, 열거형 형식 포함), Boolean, Char, Char array, Date,ObjectAny numeric type (including Byte, SByte, and enumerated types), Boolean, Char, Char array, Date, Object
CType 쉼표 (,) 뒤에 지정 된 형식Type specified following the comma (,) 기본 데이터 형식 (기본 형식의 배열 포함)으로 변환 하는 경우 해당 변환 키워드에 대해 허용 되는 것과 동일한 형식입니다.When converting to an elementary data type (including an array of an elementary type), the same types as allowed for the corresponding conversion keyword

복합 데이터 형식으로 변환 하는 경우, 구현 하는 인터페이스 및 해당 형식이 상속 하는 클래스When converting to a composite data type, the interfaces it implements and the classes from which it inherits

오버 로드 CType된 클래스 또는 구조체 (해당 클래스 또는 구조체)로 변환 하는 경우When converting to a class or structure on which you have overloaded CType, that class or structure
CUInt UInteger 데이터 형식UInteger Data Type 모든 숫자 형식 (, Byte SByte Boolean ,String열거형 형식 포함),,,ObjectAny numeric type (including Byte, SByte, and enumerated types), Boolean, String, Object
CULng ULong 데이터 형식ULong Data Type 모든 숫자 형식 (, Byte SByte Boolean ,String열거형 형식 포함),,,ObjectAny numeric type (including Byte, SByte, and enumerated types), Boolean, String, Object
CUShort UShort 데이터 형식UShort Data Type 모든 숫자 형식 (, Byte SByte Boolean ,String열거형 형식 포함),,,ObjectAny numeric type (including Byte, SByte, and enumerated types), Boolean, String, Object

CType 함수The CType Function

CType 함수 는 두 인수에 대해 작동 합니다.The CType Function operates on two arguments. 첫 번째는 변환할 식이고 두 번째는 대상 데이터 형식 또는 개체 클래스입니다.The first is the expression to be converted, and the second is the destination data type or object class. 첫 번째 인수는 형식이 아니라 식 이어야 합니다.Note that the first argument must be an expression, not a type.

CType인라인 함수입니다. 즉, 컴파일 코드에서 함수 호출을 생성 하지 않고 변환을 수행 하는 경우가 많습니다.CType is an inline function, meaning the compiled code makes the conversion, often without generating a function call. 이것은 성능을 향상시킵니다.This improves performance.

를 다른 형식 변환 CType 키워드와 비교 하려면 DirectCast operatorTryCast operator를 참조 하세요.For a comparison of CType with the other type conversion keywords, see DirectCast Operator and TryCast Operator.

기본 형식Elementary Types

다음 예에서는 CType의 사용법을 보여줍니다.The following example demonstrates the use of CType.

k = CType(q, Integer)
' The following statement coerces w to the specific object class Label.
f = CType(w, Label)

복합 형식Composite Types

를 사용 CType 하 여 값을 복합 데이터 형식 및 기본 형식으로 변환할 수 있습니다.You can use CType to convert values to composite data types as well as to elementary types. 다음 예제와 같이이를 사용 하 여 개체 클래스를 해당 인터페이스 중 하나의 형식으로 강제 변환할 수도 있습니다.You can also use it to coerce an object class to the type of one of its interfaces, as in the following example.

' Assume class cZone implements interface iZone.
Dim h As Object
' The first argument to CType must be an expression, not a type.
Dim cZ As cZone
' The following statement coerces a cZone object to its interface iZone.
h = CType(cZ, iZone)

배열 형식Array Types

CType는 다음 예제와 같이 배열 데이터 형식을 변환할 수도 있습니다.CType can also convert array data types, as in the following example.

Dim v() As classV
Dim obArray() As Object
' Assume some object array has been assigned to obArray.
' Check for run-time type compatibility.
If TypeOf obArray Is classV()
    ' obArray can be converted to classV.
    v = CType(obArray, classV())
End If

자세한 내용 및 예제는 배열 변환을 참조 하세요.For more information and an example, see Array Conversions.

CType을 정의 하는 형식Types Defining CType

정의한 클래스 또는 CType 구조체를 정의할 수 있습니다.You can define CType on a class or structure you have defined. 이를 통해 클래스 또는 구조체의 형식으로 값을 변환할 수 있습니다.This allows you to convert values to and from the type of your class or structure. 자세한 내용 및 예제를 보려면 방법: 변환 연산자를 정의 합니다.For more information and an example, see How to: Define a Conversion Operator.

참고

변환 키워드와 함께 사용 되는 값은 대상 데이터 형식에 대해 유효 해야 합니다. 그렇지 않으면 오류가 발생 합니다.Values used with a conversion keyword must be valid for the destination data type, or an error occurs. Long 예를 들어를 Integer로 변환 하려고 하면의 Long 값이 Integer 데이터 형식에 대 한 유효한 범위 내에 있어야 합니다.For example, if you attempt to convert a Long to an Integer, the value of the Long must be within the valid range for the Integer data type.

주의

소스 형식이 대상 형식에서 파생 되지 않은 경우 런타임에 한 클래스 형식에서 다른 형식으로 변환 하는작업이실패합니다.CTypeSpecifying CType to convert from one class type to another fails at run time if the source type does not derive from the destination type. 이러한 오류는 InvalidCastException 예외를 throw 합니다.Such a failure throws an InvalidCastException exception.

그러나 형식 중 하나가 정의 된 구조체 또는 클래스이 고 해당 구조체 또는 클래스에서를 정의한 CType 경우 CType의 요구 사항을 충족 하는 경우 변환이 성공할 수 있습니다.However, if one of the types is a structure or class you have defined, and if you have defined CType on that structure or class, a conversion can succeed if it satisfies the requirements of your CType. 방법: 변환 연산자를 정의 합니다.See How to: Define a Conversion Operator.

명시적 변환을 수행 하는 것은 지정 된 데이터 형식 또는 개체 클래스로 식을 캐스팅 하는 것으로 알려져 있습니다.Performing an explicit conversion is also known as casting an expression to a given data type or object class.

참고자료See also