DirectCast 연산자(Visual Basic)

상속 또는 구현을 기반으로 하는 형식 변환 작업을 소개합니다.

설명

DirectCast은(는) 변환을 위해 Visual Basic 런타임 도우미 루틴을 사용하지 않으므로 데이터 형식 Object으로(에서) 변환할 때 CType보다 다소 향상된 성능을 제공합니다.

CType 함수TryCast 연산자 키워드를 사용하는 방법과 유사한 DirectCast 키워드를 사용합니다. 첫 번째 인수로 식을 제공하고 두 번째 인수로 변환할 형식을 제공합니다. DirectCast은(는) 두 인수의 데이터 형식 간에 상속 또는 구현 관계가 필요합니다. 즉, 한 형식이 다른 형식을 상속하거나 구현해야 합니다.

오류 및 실패

DirectCast은(는) 상속 또는 구현 관계가 없음을 감지하는 경우 컴파일러 오류를 생성합니다. 그러나 컴파일러 오류가 없어도 성공적인 변환이 보장되는 것은 아닙니다. 원하는 변환이 축소되면 런타임에 실패할 수 있습니다. 이 경우 런타임은 InvalidCastException 오류를 throw합니다.

변환 키워드

형식 변환 키워드의 비교는 다음과 같습니다.

키워드 데이터 형식 인수 관계 런타임 실패
CType Function 모든 데이터 형식 두 데이터 형식 간에 확대 또는 축소 변환을 정의해야 합니다. InvalidCastException을(를) throw
DirectCast 모든 데이터 형식 한 형식은 다른 형식을 상속하거나 구현해야 합니다. InvalidCastException을(를) throw
TryCast 연산자 참조 형식만 한 형식은 다른 형식을 상속하거나 구현해야 합니다. Nothing을 반환합니다.

예시

다음 예제에서는 DirectCast의 두 가지 용도를 보여줍니다. 하나는 런타임에 실패하고 다른 하나는 성공하는 경우입니다.

Dim q As Object = 2.37
Dim i As Integer = CType(q, Integer)
' The following conversion fails at run time
Dim j As Integer = DirectCast(q, Integer)
Dim f As New System.Windows.Forms.Form
Dim c As System.Windows.Forms.Control
' The following conversion succeeds.
c = DirectCast(f, System.Windows.Forms.Control)

앞의 예제에서 런타임 형식 q은(는) Double입니다. Double을(를) Integer(으)로 변환할 수 있으므로 CType은(는) 성공합니다. 그러나 첫 번째 DirectCast은(는) 변환이 있더라도 런타임 형식 Double이(가) Integer와 상속 관계가 없으므로 런타임에 실패합니다. 두 번째 DirectCast은(는) Form 형식에서 Control(으)로 변환하고 Form이(가) 상속하므로 성공합니다.

참고 항목