다음을 통해 공유


DirectCast 연산자(Visual Basic)

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

비고

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

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

오류 및 오류

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

변환 키워드

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

키워드 데이터 형식 인수 관계 런타임 실패
CType 연산자 모든 데이터 형식 두 데이터 형식 간에 확대 또는 축소 변환을 정의해야 합니다. 던졌습니다 InvalidCastException
DirectCast 모든 데이터 형식 한 형식은 다른 형식에서 상속하거나 구현해야 합니다. 던졌습니다 InvalidCastException
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. CType 으로 변환할 수 있으므로 Double 성공합니다 Integer. 그러나 변환이 있더라도 런타임 형식 DirectCast 에 상속 관계가 Double없으므로 런타임에 첫 번째 Integer 가 실패합니다. 두 번째는 DirectCast 상속되는 형식에서 형식 FormControlForm 으로 변환되기 때문에 성공합니다.

참고하십시오