상속 또는 구현을 기반으로 하는 형식 변환 작업을 소개합니다.
비고
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 으로 변환되기 때문에 성공합니다.
참고하십시오
.NET