다음을 통해 공유


암시적 변환과 명시적 변환(Visual Basic)

암시적 변환에서는 소스 코드에 특별한 구문이 필요하지 않습니다. 다음 예제의 경우 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

Boolean 데이터 형식(Visual Basic)

임의의 숫자 형식(Byte, SByte 및 열거 형식 포함), String, Object

CByte

Byte 데이터 형식(Visual Basic)

임의의 숫자 형식(SByte 및 열거 형식 포함), Boolean, String, Object

CChar

Char 데이터 형식(Visual Basic)

String, Object

CDate

Date 데이터 형식(Visual Basic)

String, Object

CDbl

Double 데이터 형식(Visual Basic)

임의의 숫자 형식(Byte, SByte 및 열거 형식 포함), Boolean, String, Object

CDec

Decimal 데이터 형식(Visual Basic)

임의의 숫자 형식(Byte, SByte 및 열거 형식 포함), Boolean, String, Object

CInt

Integer 데이터 형식(Visual Basic)

임의의 숫자 형식(Byte, SByte 및 열거 형식 포함), Boolean, String, Object

CLng

Long 데이터 형식(Visual Basic)

임의의 숫자 형식(Byte, SByte 및 열거 형식 포함), Boolean, String, Object

CObj

Object 데이터 형식

모든 형식

CSByte

SByte 데이터 형식(Visual Basic)

임의의 숫자 형식(Byte 및 열거 형식 포함), Boolean, String, Object

CShort

Short 데이터 형식(Visual Basic)

임의의 숫자 형식(Byte, SByte 및 열거 형식 포함), Boolean, String, Object

CSng

Single 데이터 형식(Visual Basic)

임의의 숫자 형식(Byte, SByte 및 열거 형식 포함), Boolean, String, Object

CStr

String 데이터 형식(Visual Basic)

임의의 숫자 형식(Byte, SByte 및 열거 형식 포함), Boolean, Char, Char 배열, Date, Object

CType

쉼표(,) 다음에 지정된 형식

기본 데이터 형식(기본 형식의 배열 포함)으로 변환하는 경우, 해당하는 변환 키워드에 허용되는 것과 동일한 형식

복합 데이터 형식으로 변환하는 경우, 해당 형식이 구현하는 인터페이스 및 해당 형식이 상속하는 클래스

CType을 오버로드한 클래스 또는 구조체로 변환하는 경우, 해당 클래스 또는 구조체

CUInt

UInteger 데이터 형식

임의의 숫자 형식(Byte, SByte 및 열거 형식 포함), Boolean, String, Object

CULng

ULong 데이터 형식(Visual Basic)

임의의 숫자 형식(Byte, SByte 및 열거 형식 포함), Boolean, String, Object

CUShort

UShort 데이터 형식(Visual Basic)

임의의 숫자 형식(Byte, SByte 및 열거 형식 포함), Boolean, String, Object

CType 함수

CType 함수(Visual Basic)는 두 개의 인수로 연산을 수행합니다. 첫 번째는 변환할 식이고 두 번째는 대상 데이터 형식이나 개체 클래스입니다. 첫 번째 인수는 형식이 아니라 식이어야 합니다.

CType은 인라인 함수입니다. 즉, 컴파일된 코드에서 변환을 수행하며 대개 함수 호출은 생성되지 않습니다. 이렇게 하면 성능이 향상됩니다.

CType과 다른 형식 변환 키워드를 비교하려면 DirectCast 연산자(Visual Basic)TryCast 연산자(Visual Basic)를 참조하십시오.

기본 형식

다음 예제는 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

자세한 내용과 예제는 배열 변환(Visual Basic)을 참조하십시오.

CType을 정의하는 형식

사용자가 정의한 클래스 또는 구조체에 CType을 정의할 수 있습니다. 이렇게 하면 사용자가 정의한 클래스 또는 구조체의 형식과 값 간의 변환이 가능해집니다. 자세한 내용과 예제는 방법: 변환 연산자 정의(Visual Basic)를 참조하십시오.

참고

변환 키워드와 함께 사용되는 값은 대상 데이터 형식에 대해 유효해야 하며 그렇지 않으면 오류가 발생합니다. 예를 들어, Long을 Integer로 변환하는 경우 Long의 값이 Integer 데이터 형식에 맞는 유효한 범위 안에 있어야 합니다.

경고

CType을 지정하여 한 클래스 형식에서 다른 클래스 형식으로 변환할 경우 소스 형식이 대상 형식에서 파생되지 않았으면 런타임에 오류가 발생합니다. 이러한 오류가 발생하면 InvalidCastException 예외가 throw됩니다.

그러나 형식 중 하나가 사용자가 정의한 구조체나 클래스이고 해당 구조체 또는 클래스에 CType을 정의한 경우에는 CType의 요구 사항이 충족되면 변환이 성공적으로 수행됩니다. 방법: 변환 연산자 정의(Visual Basic)를 참조하십시오.

명시적 변환을 수행하는 것을 특정 데이터 형식이나 개체 클래스로 식을 캐스팅한다고도 합니다.

참고 항목

작업

방법: Visual Basic에서 Object를 다른 형식으로 변환

데이터 형식 문제 해결(Visual Basic)

참조

데이터 형식 요약(Visual Basic)

형식 변환 함수(Visual Basic)

개념

변환 도중 값 변경(Visual Basic)

문자열과 다른 형식 사이의 변환(Visual Basic)

Visual Basic의 형식 없는 프로그래밍

기타 리소스

Visual Basic의 형식 변환

구조체(Visual Basic)