web-dev-qa-db-ja.com

VBScriptの+と&演算子の違いは何ですか?

VBScriptについて説明しているすべてのサイトで、 '& '演算子は、文字列連結演算子としてリストされます。ただし、最近継承した一部のコードでは、「+ '演算子が使用されていますが、この結果としてエラーは表示されません。これは受け入れられる代替手段ですか?

33
Jeremy Cron

+演算子はオーバーロードされますが、&演算子はオーバーロードされません。 &演算子は文字列の連結のみを行います。一部のサークルでは、&演算子は明確であるため、ベストプラクティスとして使用されます。したがって、オーバーロードの結果として意図しない効果をもたらすことはできません。

42
Robert Harvey

&演算子は文字列の連結を行います。つまり、オペランドを強制的に文字列に変換します(最初にCStrを呼び出すように)。 +は、式の1つが数値である場合、順番に加算を強制します。例えば:

1 & 2

12を提供しますが、

1 + 2
"1" + 2
1 + "2"

3を提供します。

したがって、あいまいさを排除するため、文字列の連結には&を使用することをお勧めします。

37
Helen

+演算子は、文字列を数値として解釈できる場合に裏目に出る可能性があります。厄介な驚きを望まない場合は、&を使用して文字列を連結します。

7
EFraim

場合によっては、+が例外をスローします。たとえば、次のとおりです。

_Sub SimpleObject_FloatPropertyChanging(fvalue, cancel)
   'fvalue is a floating point number
   MsgBox "Received Event: " + fvalue
End Sub
_

COMオブジェクトソースがイベントを発生させると、例外が発生します。次のいずれかを実行する必要があります。

_MsgBox "Received Event: " & fvalue
_

または

_MsgBox "Received Event: " + CStr(fvalue)
_

いずれの場合でも、CStr(value);を使用するのが最適です。ただし、文字列の連結に上記のコメントを使用することは、ほとんどの場合ベストプラクティスです。

2
Neal Davis