정수.구문 분석 대.신트
기본적으로, 저는 두 가지 모두를 사용해 왔습니다.Integer.Parse
그리고 대부분의 일상적인 프로그래밍 작업에서 CNt를 사용하지만, 저는 둘 사이의 차이점이 무엇인지 약간 혼란스럽습니다.
사이의 차이점은 무엇입니까?Integer.Parse
그리고.CInt
VB.NET에서?
CInt
보다 훨씬 더 많은 일을 합니다.
CInt
에서는 먼저 전달된 내용이 정수인지 확인한 다음 단순히 캐스트하여 반환합니다.더블인 경우 먼저 더블을 문자열로 변환하지 않고 변환을 시도합니다.
다음 도움말에서 확인하십시오.CInt
기타 유형 변환 함수
부분 부품.비적분 값을 정수형으로 변환하면 정수 변환 함수(CByte, CInt, CLng, CSByte, CSShort, CUInt, CULng 및 CUShort)가 분수 부분을 제거하고 값을 가장 가까운 정수로 반올림합니다.
부분 부분이 정확히 0.5이면 정수 변환 함수는 부분을 가장 가까운 짝수 정수로 반올림합니다.예를 들어 0.5는 0으로 반올림하고 1.5와 2.5는 모두 2로 반올림합니다.이것은 때때로 은행가의 반올림이라고 불리는데, 그것의 목적은 그러한 숫자들을 더할 때 축적될 수 있는 편향을 보상하는 것입니다.
따라서 간단히 말해서, 그것은 문자열을 정수로 변환하는 것보다 훨씬 더 많은 일을 합니다. 예를 들어 분수에 특정 반올림 규칙을 적용하는 것, 불필요한 변환을 단락시키는 것 등입니다.
문자열을 정수로 변환하는 경우 알 수 없는 값(예: a)을 강제로 사용하려면 (또는 )을 사용합니다.variant
또는object
데이터베이스)에서 정수로, 사용CInt
.
ILDASM을 사용하여 샘플 코드를 보면 CInt가 다음 호출로 변환된 것을 알 수 있습니다.
마이크로소프트.Visual Basic]Microsoft.Visual Basic.컴파일러 서비스.변환:정수로(문자열)
.NET Reflector를 사용하여 다음 코드를 추출할 수 있습니다.
Public Shared Function ToInteger(ByVal Value As String) As Integer
Dim num As Integer
If (Value Is Nothing) Then
Return 0
End If
Try
Dim num2 As Long
If Utils.IsHexOrOctValue(Value, (num2)) Then
Return CInt(num2)
End If
num = CInt(Math.Round(Conversions.ParseDouble(Value)))
Catch exception As FormatException
Throw New InvalidCastException(Utils.GetResourceString("InvalidCast_FromStringTo", New String() { Strings.Left(Value, &H20), "Integer" }), exception)
End Try
Return num
End Function
내부적으로 변환을 호출하는 것을 볼 수 있습니다.ParseDouble.
따라서 Binary Worrier에서 이미 설명했듯이 Integer를 사용합니다.문자열 강제에 대한 구문 분석 및 주조에 대한 CInt.
여기에 실제 차이가 있습니다. Integer.parse("1.00")는 오류를 발생시킵니다.CInt("1.00")가 작동합니다.
그<Data Type>.Parse
메소드는 값을 나타내는 문자열에서 형식의 값을 추출하는 데 사용됩니다(예: "2"에서 2).C<Data Type>
에 대해 하위 형식:)예으)으로 합니다.CInt("2")
ORCInt(SomeDouble + SomeDouble)
등).
언급URL : https://stackoverflow.com/questions/423820/integer-parse-vs-cint
'programing' 카테고리의 다른 글
jQuery에서 이벤트 핸들러를 제거하는 가장 좋은 방법은 무엇입니까? (0) | 2023.05.17 |
---|---|
jQuery에서 css 속성을 제거하는 방법 (0) | 2023.05.17 |
Postgre는 어디에 있습니까?SQL에서 데이터베이스를 저장하시겠습니까? (0) | 2023.05.17 |
비동기 대기가 추가 스레드를 생성하지 않는 경우 애플리케이션의 응답성을 어떻게 높입니까? (0) | 2023.05.17 |
Panda 그룹을 사용하여 여러 행의 문자열을 연결합니다. (0) | 2023.05.17 |