Qual é a diferença entre o VBScript + e & operador?
-
05-07-2019 - |
Pergunta
Em cada site que fala sobre VBScript, o operador '&
' é listado como o operador de concatenação. No entanto, em algum código que eu tenho herdou recentemente, vejo o operador '+
' sendo usado e eu não estou vendo erros como resultado disso. É este uma alternativa aceita?
Solução
O operador + está sobrecarregado, enquanto o operador & não é. O operador & só faz concatenação. Em alguns círculos o operador & é usado como uma boa prática, porque é ambígua e, portanto, não pode ter quaisquer efeitos imprevistos, como resultado da sobrecarga.
Outras dicas
O operador &
faz concatenação, isto é, forças operandos a serem convertidos para strings (como chamar CStr
sobre eles em primeiro lugar). +
, por sua vez, as forças disso, se uma das expressões é numérico. Por exemplo:
1 & 2
lhe dá 12
, enquanto
1 + 2
"1" + 2
1 + "2"
dar-lhe 3
.
Assim, recomenda-se a utilização &
para concatenação uma vez que elimina a ambiguidade.
operador +
pode sair pela culatra quando strings podem ser interpretadas como números. Se você não quer surpresas desagradáveis ??usar & para cordas concatenar.
Em alguns casos a + irá lançar uma exceção; por exemplo, o seguinte:
Sub SimpleObject_FloatPropertyChanging(fvalue, cancel)
'fvalue is a floating point number
MsgBox "Received Event: " + fvalue
End Sub
Você receberá uma exceção quando a fonte objeto COM aciona o evento - você deve fazer um dos seguintes procedimentos:
MsgBox "Received Event: " & fvalue
ou
MsgBox "Received Event: " + CStr(fvalue)
Pode ser o melhor em ambos os casos ao uso CStr(value)
; mas usando & per acima comentários para concatenação é quase sempre a melhor prática.