Qual è la differenza tra + e & amp; di VBScript operatore?
-
05-07-2019 - |
Domanda
Su ogni sito che parla di VBScript, l'operatore ' & amp;
' è elencato come operatore di concatenazione di stringhe. Tuttavia, in alcuni codici che ho ereditato di recente, vedo l'operatore " +
" in uso e non vedo alcun errore a causa di ciò. È un'alternativa accettata?
Soluzione
L'operatore + è sovraccarico, mentre & amp; l'operatore no. Il & amp; l'operatore esegue solo la concatenazione di stringhe. In alcuni ambienti & amp; l'operatore viene utilizzato come best practice perché non è ambiguo e pertanto non può avere effetti indesiderati a causa del sovraccarico.
Altri suggerimenti
L'operatore & amp;
esegue la concatenazione di stringhe, ovvero impone che gli operandi vengano convertiti in stringhe (come chiamare prima CStr
). +
, a sua volta, forza l'aggiunta se una delle espressioni è numerica. Ad esempio:
1 & 2
ti dà 12
, mentre
1 + 2
"1" + 2
1 + "2"
ti dà 3
.
Quindi, si consiglia di utilizzare & amp;
per la concatenazione di stringhe poiché elimina le ambiguità.
+
potrebbe ritorcersi contro quando le stringhe possono essere interpretate come numeri. Se non vuoi brutte sorprese usa & amp; per concatenare le stringhe.
In alcuni casi il + genererà un'eccezione; ad esempio quanto segue:
Sub SimpleObject_FloatPropertyChanging(fvalue, cancel)
'fvalue is a floating point number
MsgBox "Received Event: " + fvalue
End Sub
Otterrai un'eccezione quando l'origine dell'oggetto COM genera l'evento: devi eseguire una delle seguenti operazioni:
MsgBox "Received Event: " & fvalue
o
MsgBox "Received Event: " + CStr(fvalue)
In entrambi i casi potrebbe essere preferibile utilizzare CStr (valore)
; ma usando & amp; per i commenti precedenti per la concatenazione di stringhe è quasi sempre la migliore pratica.