programing

DirectCast, CType, TryCast를 사용한 주조 데이터 유형

easyjava 2023. 6. 3. 08:52
반응형

DirectCast, CType, TryCast를 사용한 주조 데이터 유형

2005년 VB6에서 VB.NET으로 이전한 이후로 저는 Ctype을 사용하여 데이터 유형 간에 캐스팅 작업을 수행하고 있습니다.제가 이렇게 하는 이유는 VB6에 존재하던 타이핑 속도가 더 빠르기 때문입니다. 그리고 그것들 사이에 차이가 없다면 DirectCast를 사용해야 하는 이유를 모르겠습니다.

가끔은 캐스팅이 실패할 수 있다는 것을 알기 때문에 TryCast를 사용합니다.하지만 저는 Ctype과 DirectCast의 차이를 알 수 없습니다.

일반적인 간단한 영어의 차이가 두 가지(CType과 DirectCast)의 차이점이 무엇인지 알려줄 수 있는 사람이 있습니까?어디에 사용할 것인지에 대한 예를 추가하면 도움이 됩니다.

TryCast 및 DirectCast는 CLR의 주조 지원에 직접 매핑되는 주조 작업자입니다.기본 유형의 개체를 파생 유형으로 신속하게 캐스팅하거나 값 유형의 값 상자를 열 수 있습니다.DirectCast는 캐스트가 불가능할 때 예외를 던지며, TryCast는 실패할 경우 아무 것도 반환하지 않습니다.일반적으로 DirectCast를 사용하여 프로그래밍 오류를 탐지하려고 합니다.

CType은 CLR이 눈살을 찌푸리게 하는 변환의 상위 집합을 허용합니다.제가 생각할 수 있는 가장 좋은 예는 문자열을 숫자나 날짜로 변환하는 것입니다.예:

Dim obj As Object
obj = "4/1/2010"
Dim dt As DateTime = CType(obj, DateTime)

Option Strict On(옵션 엄격 설정)이 적용되는 경우 이 옵션을 사용해야 합니다.Off(꺼짐)인 경우 직접 수행할 수 있습니다.

Option Strict Off
...
    Dim dt As DateTime = obj

물론 매우 편리하고 동적으로 타이핑된 언어로서 VB.NET의 유산의 일부입니다.하지만 문제가 없는 것은 아니지만, 그 날짜는 stackoverflow.com 에서 유니콘의 날이지만 영국인이 현에 들어가는 1월의 날이 될 것입니다.예상치 못한 변환이 CLR에서 이러한 변환을 직접 허용하지 않는 이유입니다.명시적이고 결코 놀라운 변환은 다음과 같습니다.

Dim dt As DateTime = DateTime.Parse(obj.ToString(), _
    System.Globalization.CultureInfo.GetCultureInfo("en-US").DateTimeFormat)

Try/DirectCast vs. CType vs. 명시적인 변환 중 어느 쪽을 선택해야 할지는 오히려 개인적인 선택입니다.이제 Option Strict On(옵션 엄격 설정)으로 프로그래밍한 경우 Try/DirectCast를 사용해야 합니다.동적 타이핑의 편리함을 좋아하기 때문에 VB.NET 언어를 선호한다면 주저하지 말고 Ctype을 사용하십시오.

DirectCast는 값 유형(정수 등)에서는 두 배 빠르지만 참조 유형에서는 동일합니다.

자세한 내용은 "변환 함수, CType, DirectCast 및 시스템"을 참조하십시오.이 MSDN 페이지의 "변환" 섹션입니다.

페이지는 그것을 잘 설명합니다.

읽어보면, 당신이 사용할 때DirectCast변환은 축소 또는 확장 없이 작동합니다(이 경우 숫자 데이터).반면에.CType개발자가 범위를 좁히거나 좁히는 것을 인지하면서 변환을 시도할 것입니다.

변환이란 한 데이터 유형을 다른 데이터 유형(예: 문자열에서 정수, 십진수에서 정수, 개체에서 문자열 등)으로 변환하는 것을 의미합니다.

"캐스트"란 다음 규칙 중 하나에 따라 한 개체 유형을 관련된 다른 유형으로 변경하는 것을 의미합니다.

http://www.thedevheaven.com/2012/09/directcast-vs-ctype.html

언급URL : https://stackoverflow.com/questions/2703585/casting-datatypes-with-directcast-ctype-trycast

반응형