이 모든 것이 동일합니까? 어떤 상황에서 서로를 선택해야합니까?
var.ToString ()
CStr (var)
C 타입 (var, String)
DirectCast (var, String)
편집 : NotMyself의 제안 ...
- TryCast (var, String)
이 모든 것이 동일합니까? 어떤 상황에서 서로를 선택해야합니까?
var.ToString ()
CStr (var)
C 타입 (var, String)
DirectCast (var, String)
편집 : NotMyself의 제안 ...
답변:
그것들은 모두 약간 다르며 일반적으로 사용이 허용됩니다.
var.
ToString
()
어떤 유형인지에 관계없이 객체의 문자열 표현을 제공합니다. var
문자열이 아닌 경우 이것을 사용하십시오 .CStr
(var)
VB 문자열 캐스트 연산자입니다. 나는 VB 사람이 아니므로 피하는 것이 좋지만 실제로 아무것도 아프지 않을 것입니다. 나는 그것이 기본적으로와 같다고 생각합니다 CType
.CType
(var, String)
제공된 변환 연산자를 사용하여 지정된 유형을 문자열로 변환합니다.DirectCast
(var, String)
객체를 문자열로 업 캐스트하는 데 사용됩니다. 객체 변수가 실제로 문자열이라는 것을 알고 있다면 이것을 사용하십시오. 이것은 (string)var
C #에서 와 동일 합니다.TryCast
(@ NotMyself 에서 언급했듯이 )는 같지만 변수를 예외로 처리하지 않고 문자열로 변환 할 수없는 경우 DirectCast
반환 Nothing
합니다. 이것은 var as string
C #에서 와 동일 합니다. TryCast
MSDN 의 페이지도 잘 비교됩니다.TryCast
만이 가질 수있는 형태가 될 필요가 있기 때문에, 값 유형 작동 Nothing
값으로
CStr(var)
var가 DBNull.Value 인 경우 질식하고 예외가 발생하지만 대체 Convert.ToString(var)
는 빈 문자열을 반환합니다.
Dim myList AS ArrayList=new ArrayList
당신이 쓸 때 (From e In myList select CType(e.Name,String)).ToArray()
작동하지 않습니다. 나는 글을 쓰기 위해 왔고 ... select CType(e.Name.ToString,String)).ToArray()
나는 미소를 되찾았다.
MSDN 은 특정 유형에 대한 Cxxx 캐스트가 인라인 코드로 변환되기 때문에 VB .NET에서 성능을 향상시킬 수 있음을 나타냅니다. 어떤 이유로 든 특정 유형의 CType과 달리 DirectCast 를 제안 합니다 (문서에는 상속 관계가있을 때의 내용이 나와 있습니다. VB 런타임.)
VB .NET 코드를 작성할 때 내가 사용하는 작업은 수행중인 작업에 따라 다릅니다. 프로토 타입 코드라면 버릴 것입니다. 나는 입력하는 모든 것을 사용합니다. 내가 진지한 코드라면 Cxxx 캐스트를 사용하려고합니다. 존재하지 않는 경우 상속 관계가 있다고 합리적으로 믿는 경우 DirectCast를 사용합니다. 캐스트가 성공 해야하는지 잘 모르는 상황 (예 : 사용자 입력-> 정수) 인 경우 TryCast를 사용하여 사용자에게 예외를 던지는 것보다 친절한 작업을 수행합니다.
내가 흔들 수없는 한 가지는 CStr 대신 ToString을 사용하는 경향이 있지만 Cstr이 더 빠르다는 것입니다.
다음 구문을 선호합니다.
Dim number As Integer = 1
Dim str As String = String.TryCast(number)
If str IsNot Nothing Then
Hah는 일반적으로 C #으로 코드를 작성한다고 말할 수 있습니다. 8)
내가 TryCast를 선호하는 이유는 예외 캐스팅의 오버 헤드를 망칠 필요가 없기 때문입니다. 캐스트가 성공하거나 변수가 null로 초기화되고 그에 따라 처리됩니다.
.ToString()
. Integer와 같은 값 유형은 Nothing 일 수 없습니다. 따라서이 경우 CStr (number) 또는 number.ToString ()이 안전합니다. 일반적인 경우 (값 유형이 아닌) CStr (무엇이든)은 Nothing을 처리 할 수 있으므로 안전합니다. 결과는 String 변수에서 Nothing이됩니다. TryCast는 여기가 아니라 매우 유용합니다.
String
것이기 때문에 OP가 DirectCast가 적절한 상황에 대해 논의하고 있지는 않습니다.
String
및 ToString
내 불만 사항이 적용되지 않습니다. 일반 CONVERSION에서 주제를 좁힐 때까지 DirectCast를 옹호해서는 안됩니다.
인증 시험에 따르면 CXXX 변환보다 성능이 더 우수하므로 간단한 변환에 가능할 때마다 Convert.ToXXX ()를 사용해야합니다.
한 번에, MSDN 라이브러리 상태가 더 빠르기 때문에 CStr ()을 사용하는 것을 보았습니다. 그래도 이것이 사실인지 모르겠습니다.