Quelle est la différence entre les symboles + et & amp; de VBScript? opérateur?
-
05-07-2019 - |
Question
Sur chaque site qui parle de VBScript, l'opérateur ' & amp;
' est répertorié en tant qu'opérateur de concaténation de chaînes. Cependant, dans certains codes dont j'ai récemment hérité, l'opérateur " +
" est utilisé et je ne vois aucune erreur en conséquence. Est-ce une alternative acceptée?
La solution
L'opérateur + est surchargé, alors que le & amp; l'opérateur n'est pas. Le & amp; l'opérateur ne fait que la concaténation de chaînes. Dans certains milieux, le & amp; L’opérateur est utilisé comme pratique recommandée car il est dépourvu d’ambiguïté et ne peut donc avoir d’effets inattendus en raison de la surcharge.
Autres conseils
L'opérateur & amp;
effectue la concaténation de chaînes, c'est-à-dire qu'il force les opérandes à être convertis en chaînes (comme appeler d'abord CStr
). +
, à son tour, force l'ajout si l'une des expressions est numérique. Par exemple:
1 & 2
vous donne 12
, alors que
1 + 2
"1" + 2
1 + "2"
vous donner 3
.
Il est donc recommandé d'utiliser & amp;
pour la concaténation de chaînes, car elle élimine les ambiguïtés.
+
peut se retourner contre lui lorsque les chaînes peuvent être interprétées comme des nombres. Si vous ne voulez pas de mauvaises surprises, utilisez & amp; concaténer des chaînes.
Dans certains cas, le + lève une exception. Par exemple:
Sub SimpleObject_FloatPropertyChanging(fvalue, cancel)
'fvalue is a floating point number
MsgBox "Received Event: " + fvalue
End Sub
Vous obtiendrez une exception lorsque la source de l'objet COM déclenchera l'événement. Vous devez alors effectuer l'une des opérations suivantes:
MsgBox "Received Event: " & fvalue
ou
MsgBox "Received Event: " + CStr(fvalue)
Dans les deux cas, il peut être préférable d’utiliser CStr (valeur)
; mais en utilisant & amp; Les commentaires ci-dessus pour la concaténation de chaînes sont presque toujours les meilleures pratiques.