programing

CStr() 대 Str() 대 . .문자열로()

powerit 2023. 5. 18. 21:28
반응형

CStr() 대 Str() 대 . .문자열로()

정확히 어떤 점이 다른지 알고 싶습니다.CStr(),Str()그리고..ToString()?

Label1.Text = CStr(Int(Rnd() * 10))

그리고.

Label1.Text = Str(Int(Rnd() * 10))

그리고.

Label1.Text = Int(Rnd() * 10).ToString

이 조건을 사용할 경우:

If Label1.Text = "7" Then
     'Some code here
End If

Str()여기서는 작동하지 않습니다.뭐가 달라요?

ToString에서 다음을 호출합니다..ToString()특정 인스턴스에 대해 기능합니다.실제로, 이것은 문제의 물체가 다음과 같을 경우 예외를 던질 것이라는 것을 의미합니다.Nothing그러나, 당신은 구현할 수 있습니다..ToString()당신의 객체의 유용한 문자열 표현을 얻기 위해 당신의 클래스에서, 반면에.CType/CStr기본 제공 클래스 및 인터페이스에서만 작동합니다.

CStrCtype(표현식, String)은 정확히 동일합니다(다른 포스터가 어디서 그런 아이디어를 얻었는지 모르겠습니다).CStr더 빠름).하지만 그것들은 실제로 함수가 아닙니다. 표현식의 선언에 따라 매우 다른 코드를 내보내는 컴파일러 명령어입니다.대부분의 경우 이러한 지시어는 합리적인 문자열을 표현식에서 빼내기 위해 내부 VB 코드를 호출합니다.

DirectCast(표현식, String)는 문제의 표현식이 실제로는String그리고 그냥 캐스팅을 합니다.이 모든 옵션 중에서 가장 빠르지만 식이 아닌 경우 예외가 발생합니다.String.

VBA/VB6 환경에 추가로 제공되는 솔루션으로, VBA/VB6 환경에는ToString():

  • Str() 국제적인 대표성을 알지 못합니다.소수점 구분 기호는 항상 점(.).

    위에서 이미 언급한 바와 같이 양수 값의 경우 결과 문자열 앞에 공백이 붙습니다.

  • 또한 존재합니다.Str$()에 대한 차이Str()반환 유형:

    Str()유형 문자열의 변형을 반환합니다.Str$()문자열을 반환합니다.

    그리고.Str$()보다 약간 빠릅니다.Str().

  • CStr()대조적으로 국제적인 대표성을 인식하고 있습니다.소수 구분 기호는 Windows(윈도우) 국제 설정에 따라 달라집니다.

    양수 값에 대한 추가 접두사 지정은 수행되지 않습니다.

따라서 값 유형을 문자열로 변환해야 하고 점을 소수점 구분 기호로 지정해야 하고 접두사 공백이 없어야 하는 경우 다음 구문을 사용합니다.

Dim d As Double
d = 123.456

Dim s As String
s = Trim(Str$(d))

ToString()에 대해서도 모르고 VB.NET에 대해서도 모릅니다.

그러나 VB6(Visual Basic 6)의 경우:

Cstr()과 Str() 모두 값을 문자열로 변환하지만 Cstr()이 더 나은 이유는 다음과 같습니다.

Str(): 문자열로 변환한 후 양수 앞에 공백 1개를 추가합니다.예: Str (22) > "22"

Cstr(): 문자열로 변환한 후에는 위의 추가 공간을 추가하지 않습니다. 최상의 결과를 위해 트림() - 트림(Cstr(변수))과 함께 사용합니다.

문제의 코드에는 문제가 없지만, 언급하는 것이 중요합니다.Str()숫자 식만 문자열로 변환하고 다른 경우에는 오류를 제공하므로 셀의 값을 변환하는 데 사용하지 마십시오.

은 내대은입니다.str()항상 기호 문자에 공백을 추가하기 때문에 값을 비교할 때 오류가 발생합니다. 대신사를 사용합니다.CStr()대신에 이것을 하지 않습니다.

이를 위해 다음과 같은 비즈니스 논리를 사용할 수 있습니다.

예:

Dim sVar as String = "1"
Dim i as Integer = 1
console.write( cstr(i) = sVar )

출력 대상:

False

코드가 오래된 코드에 상당히 깊이 들어가 있고 로깅 기반 디버깅이 전부인 프로덕션 환경에서 탐색하기가 매우 어려웠기 때문에 이번 작업에서 몇 시간을 허비했습니다.

언급URL : https://stackoverflow.com/questions/8924803/cstr-vs-str-vs-tostring

반응형