암시적 변환에는 소스 코드에 특별한 구문이 필요하지 않습니다. 다음 예제에서 Visual Basic은 k
의 값을 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
명시적 변환은 형식 변환 키워드를 사용합니다. Visual Basic은 괄호 안의 식을 원하는 데이터 형식으로 강제 변환하는 몇 가지 키워드를 제공합니다. 이러한 키워드는 함수처럼 작동하지만 컴파일러는 코드를 인라인으로 생성하므로 함수 호출보다 실행 속도가 약간 빠릅니다.
앞의 예시 확장에서, CInt
키워드가 값 q
을 정수형으로 다시 변환한 뒤 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).
변환 키워드
다음 표에서는 사용 가능한 변환 키워드를 보여 줍니다.
형식 변환 키워드 | 식을 데이터 형식으로 변환합니다. | 변환할 식의 허용 데이터 형식 |
---|---|---|
CBool |
불리언 데이터 형식 | 모든 숫자 형식(, Byte 및 열거형 형식 포함SByte ), String Object |
CByte |
바이트 데이터 형식 | 모든 숫자 형식(포함 SByte 및 열거 형식), Boolean , String Object |
CChar |
Char 데이터 형식 |
String , Object |
CDate |
날짜 데이터 형식 |
String , Object |
CDbl |
Double 데이터 형식 | 모든 숫자 형식(Byte , SByte 및 열거형 형식), Boolean , String , Object |
CDec |
10진수 데이터 형식 | 모든 숫자 형식(Byte , SByte 및 열거형 형식), Boolean , String , Object |
CInt |
정수 데이터 형식 | 모든 숫자 형식(Byte , SByte 및 열거형 형식), Boolean , String , Object |
CLng |
긴 데이터 형식 | 모든 숫자 형식(Byte , SByte 및 열거형 형식), Boolean , String , Object |
CObj |
개체 데이터 형식 | 모든 형식 |
CSByte |
SByte 데이터 형식 | 모든 숫자 형식(포함 Byte 및 열거 형식), Boolean , String Object |
CShort |
짧은 데이터 형식 | 모든 숫자 형식(Byte , SByte 및 열거형 형식), Boolean , String , Object |
CSng |
Single 데이터 형식 | 모든 숫자 형식(Byte , SByte 및 열거형 형식), Boolean , String , Object |
CStr |
문자열 데이터 형식 | 모든 숫자 유형(예: Byte , SByte , 열거형 형식 포함), Boolean , Char 및 Char 배열, Date , Object |
CType |
쉼표 다음에 지정된 형식(, ) |
기본 데이터 형식(기본 형식의 배열 포함)으로 변환할 때 해당 변환 키워드에 허용되는 형식과 동일한 형식 복합 데이터 형식으로 변환할 때 구현하는 인터페이스 및 상속되는 클래스 오버로드된 CType 가 있는 클래스 또는 구조체로 변환할 때, 그 클래스 또는 구조체는 |
CUInt |
UInteger 데이터 형식 | 모든 숫자 형식(Byte , SByte 및 열거형 형식), Boolean , String , Object |
CULng |
ULong 데이터 형식 | 모든 숫자 형식(Byte , SByte 및 열거형 형식), Boolean , String , Object |
CUShort |
UShort 데이터 형식 | 모든 숫자 형식(Byte , SByte 및 열거형 형식), Boolean , String , Object |
CType 함수
CType 함수는 두 인수에서 작동합니다. 첫 번째는 변환할 식이고, 두 번째는 대상 데이터 형식 또는 개체 클래스입니다. 첫 번째 인수는 형식이 아닌 식이어야 합니다.
CType
는 인라인 함수입니다. 즉, 컴파일된 코드는 함수 호출을 생성하지 않고 변환합니다. 이렇게 하면 성능을 향상 시킬 수 있습니다.
다른 형식 변환 키워드와 CType
를 비교하려면 DirectCast 연산자 및 TryCast 연산자를 참조하세요.
기본 형식
다음 예에서는 CType
의 사용법을 보여줍니다.
k = CType(q, Integer)
' The following statement coerces w to the specific object class Label.
f = CType(w, Label)
복합 형식
값을 복합 데이터 형식뿐만 아니라 기본 형식으로 변환하는 데 사용할 CType
수 있습니다. 다음 예제와 같이 개체 클래스를 해당 인터페이스 중 하나의 형식으로 강제 변환하는 데 사용할 수도 있습니다.
' 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)
배열 형식
CType
는 다음 예제와 같이 배열 데이터 형식을 변환할 수도 있습니다.
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
자세한 내용과 예제는 배열 변환을 참조하세요.
CType을 정의하는 형식
정의한 클래스 또는 구조체에서 정의 CType
할 수 있습니다. 이렇게 하면 클래스 또는 구조체의 형식과 값을 변환할 수 있습니다. 자세한 내용 및 예제는 방법: 변환 연산자 정의를 참조하세요.
비고
변환 키워드와 함께 사용되는 값은 대상 데이터 형식에 대해 유효해야 합니다. 그렇지 않으면 오류가 발생합니다. 예를 들어, Long
을(를) Integer
으로 변환하려고 시도하는 경우, Long
의 값은 Integer
데이터 형식의 유효한 범위 내에 있어야 합니다.
주의
소스 형식이 CType
대상 형식에서 파생되지 않는 경우 런타임에 한 클래스 형식에서 다른 클래스 형식으로 변환하도록 지정하는 작업이 실패합니다. 이러한 오류는 InvalidCastException 예외를 발생시킵니다.
그러나 형식 중 하나가 정의한 구조 또는 클래스이고 해당 구조 또는 클래스에 정의 CType
한 경우 해당 형식의 CType
요구 사항을 충족하는 경우 변환이 성공할 수 있습니다.
참조: "방법: 변환 연산자 정의"
명시적 변환을 수행하는 것은 지정된 데이터 형식 또는 개체 클래스에 식을 캐스팅 하는 것으로도 알려져 있습니다.
참고하십시오
.NET