VBScript에 대해 말하는 모든 사이트에서 '&
'연산자가 문자열 연결 연산자로 나열됩니다. 그러나 내가 최근에 상속 한 일부 코드에서는 '+
'연산자가 사용되는 것을 볼 수 있으며 이로 인해 어떠한 오류도 나타나지 않습니다. 이것은 받아 들여진 대안인가?VBScript의 +와 & 연산자의 차이점은 무엇입니까?
답변
+ 연산자가 오버로드되는 반면 & 연산자는 오버로드되지 않습니다. & 연산자는 문자열 연결 만 수행합니다. 일부 서클의 경우 & 연산자는 모호하지 않으므로 오버로드로 인해 의도하지 않은 결과가 발생하지 않으므로 모범 사례로 사용됩니다.
+
문자열이 숫자로 해석 될 수있는 경우 연산자가 역화 될 수 있습니다. 불쾌한 놀라움을 원하지 않으면 &을 사용하여 문자열을 연결하십시오.
&
연산자는 문자열 연결을 수행합니다. 즉, 피연산자를 문자열로 변환해야합니다 (예 : CStr
을 먼저 호출하는 것과 같습니다). +
은 차례로 표현식 중 하나가 숫자 인 경우 강제 추가됩니다. 예를 들어 :
1 + 2
"1" + 2
1 + "2"
당신에게
3
을 제공하는 반면
1 & 2
, 당신에게 12
을 제공합니다.
따라서 모호성을 제거하므로 문자열 연결에 &
을 사용하는 것이 좋습니다.
문자열 번호 + 번호를 지정하는 경우 +1입니다. 수락 된 대답은 숫자 문자열을 숫자로 변환하는 vbscript에 대해서는 언급하지 않았습니다. – baacke
어떤 경우에는 +가 예외를 throw합니다. 예를 들어 다음과 같은 : - COM 개체 소스가 이벤트를 발생 때 예외를 얻을 것이다
Sub SimpleObject_FloatPropertyChanging(fvalue, cancel)
'fvalue is a floating point number
MsgBox "Received Event: " + fvalue
End Sub
는 다음 중 하나를 수행해야합니다
MsgBox "Received Event: " & fvalue
또는
MsgBox "Received Event: " + CStr(fvalue)
이 두 경우 모두 CStr(value)
을 사용하는 것이 가장 좋습니다. 문자열 연결에 대한 위의 주석 당 &을 사용하는 것은 거의 항상 최선의 방법입니다.
* '+ 연산자가 오버로드되었습니다.'* - * 어떤 의미로 오버로드 되었습니까? – Wolf
VB에서 @wolf + 연산자는 컨텍스트에 따라 더하기와 연결을 모두 수행 할 수 있습니다. –
음, 이미 읽었습니다. 오버로드 된 단어 자체가 너무 많아서 과부하가 되었기 때문에이 시점에서 대답이 조금 더 정확할 수 있습니다. – Wolf