VB에서 DirectCast()와 CType()의 차이입니다.그물
저는 이제 막 VB에 들어간 C/C++/C# 프로그래머입니다.NET. Ctype(및 CInt, CBool, CStr)을 캐스트에 사용하는 것은 캐릭터가 적고 처음 접하게 된 캐스팅 방식이기 때문입니다. 하지만 DirectCast와 TryCast에 대해서도 알고 있습니다.
간단히 말해 DirectCast와 Ctype 간에 차이(출연 효과, 성능 등)가 있습니까?저는 TryCast의 아이디어를 이해합니다.
첫 번째로 주목해야 할 것은 VB입니다.NET은 C#과 직접 유사하지 않습니다.(type)instance
주조 기구저는 이것이 두 VB를 비교할 때 출발점이자 공통적인 참고 자료로 유용하기 때문에 이것을 언급합니다.NET 연산자(및 함수 의미론을 가지고 있음에도 불구하고 함수가 아닌 연산자).
DirectCast()
C# 주조 연산자보다 더 엄격합니다.이미 캐스팅된 항목이 캐스팅 중인 유형일 때만 캐스팅할 수 있습니다.값 유형의 상자를 열 수 있지만 그렇지 않으면 변환할 수 없습니다.그래서, 예를 들어, 당신은 캐스팅할 수 없습니다.short
로.int
당신이 C#로 할 수 있는 것처럼.(int)
캐스트. 하지만 캐스트는 할 수 있어요.IEnumerable
배열로, 만약 당신의 기초가 있다면.IEnumerable
객체 변수는 정말로Array
그리고 물론 당신은 캐스팅할 수 있습니다.Object
개체 인스턴스의 유형이 상속 트리에서 캐스트 유형 아래에 있다고 가정하면 무엇이든 가능합니다.
이것은 훨씬 빠르기 때문에 바람직합니다.변환 및 유형 검사를 수행해야 하는 작업이 줄어듭니다.
CType()
C# 주조 연산자보다 엄격하지 않습니다.단순한 방법으로는 할 수 없는 일들을 할 것입니다.(int)
문자열을 정수로 변환하는 것과 같은 -style 캐스트입니다.부르는 것만큼이나 큰 힘을 가지고 있습니다.Convert.To___()
C#에서, 그곳에서.___
출연자의 대상 유형입니다.
이것은 매우 강력하기 때문에 바람직합니다.그러나 이러한 성능은 성능을 희생하는 대신에 제공됩니다. 이 성능은 다음과 같이 빠르지 않습니다.DirectCast()
또는 C#의 캐스트 연산자는 캐스트를 끝내려면 꽤 많은 작업이 필요할 수 있습니다.일반적으로 선호해야 합니다.DirectCast()
할 수 있을 때.
마지막으로, C#의 직접적인 유사체인 주조 연산자 하나를 놓쳤습니다.as
교환입니다.
와 함께CType
당신은 다음과 같은 것을 쓸 수 있습니다.Ctype("string",Integer)
하지만 함께DirectCast
위의 문장은 컴파일 시간 오류를 제공합니다.
Dim a As Integer = DirectCast("1", Integer) 'Gives compiler error
Dim b As Integer = CType("1", Integer) 'Will compile
DirectCast
니다입적한보다 더 입니다.CType
.
예를 들어, 다음과 같은 오류가 발생합니다.
Sub Main()
Dim newint As Integer = DirectCast(3345.34, Integer)
Console.WriteLine(newint)
Console.ReadLine()
End Sub
Visual Studio IDE에도 표시됩니다.
그러나 오류는 발생하지 않습니다.
Sub Main()
Dim newint As Integer = CType(3345.34, Integer)
Console.WriteLine(newint)
Console.ReadLine()
End Sub
언급URL : https://stackoverflow.com/questions/3056514/difference-between-directcast-and-ctype-in-vb-net
'programing' 카테고리의 다른 글
두 어레이를 "+"(어레이 유니온 연산자)와 병합하는 방법 (0) | 2023.05.07 |
---|---|
postgres에서 열거형 값을 삭제하는 방법은 무엇입니까? (0) | 2023.05.07 |
실행할 프로젝트를 찾을 수 없습니다.프로젝트가 D:\home\site\wwroot에 있는지 확인합니다. (0) | 2023.05.07 |
전화로 확인할 때 확인MongoDB 컬렉션의 인덱스? (0) | 2023.05.07 |
첫 번째 커밋을 어떻게 다시 시작합니까? (0) | 2023.05.07 |