Su ogni sito che parla di VBScript, l'operatore '&
' è elencato come operatore di concatenazione di stringhe. Tuttavia, in qualche codice che ho ereditato di recente, vedo l'operatore '+
' in uso e non vedo errori di conseguenza. È un'alternativa accettata?Qual è la differenza tra VBScript + e operatore?
risposta
L'operatore + è sovraccarico, mentre l'operatore & non lo è. L'operatore & esegue solo concatenazioni di stringhe. In alcuni ambienti l'operatore & viene utilizzato come procedura consigliata poiché non è ambiguo e pertanto non può avere effetti indesiderati a causa dell'overloading.
+
L'operatore può ritorcersi contro quando le stringhe possono essere interpretate come numeri. Se non vuoi che brutte sorprese usi & per concatenare le stringhe.
L'operatore &
esegue la concatenazione di stringhe, ovvero obbliga gli operandi a convertirsi in stringhe (ad esempio prima chiama CStr
). +
, a sua volta, forza l'addizione se una delle espressioni è numerica. Per esempio:
1 & 2
ti dà 12
, mentre
1 + 2
"1" + 2
1 + "2"
darvi 3
.
Quindi, si consiglia di utilizzare &
per la concatenazione di stringhe poiché elimina l'ambiguità.
+1 per specificare numero di stringa + numero. La risposta accettata non menziona vbscript che converte stringhe numeriche in numeri. – baacke
In alcuni casi il + genera un'eccezione; ad esempio il seguente:
Sub SimpleObject_FloatPropertyChanging(fvalue, cancel)
'fvalue is a floating point number
MsgBox "Received Event: " + fvalue
End Sub
Si otterrà un'eccezione quando la fonte oggetto COM genera l'evento - che si deve fare una delle seguenti operazioni:
MsgBox "Received Event: " & fvalue
o
MsgBox "Received Event: " + CStr(fvalue)
E ' potrebbe essere meglio in entrambi i casi usare CStr(value)
; ma usare & per i commenti precedenti per la concatenazione di stringhe è quasi sempre la migliore pratica.
- 1. Qual è la differenza tra vbscript e vb.net?
- 2. Qual è la differenza tra il nuovo operatore e Class.newInstance()?
- 3. Qual è la differenza tra carico atomico esplicito/negozio e operatore usuale = e operatore T?
- 4. qual è la differenza tra operatore punto e operatore risoluzione risoluzione
- 5. Qual è la differenza tra operatore >> e operatore >>> in java?
- 6. Qual è la differenza tra = e: =
- 7. Qual è la differenza tra Verilog! e ~?
- 8. Qual è la differenza tra? : e ||
- 9. qual è la differenza tra [[], []] e [[]] * 2
- 10. Qual è la differenza tra $ e $$?
- 11. Qual è la differenza tra ("") e (null)
- 12. Qual è la differenza tra dict() e {}?
- 13. Qual è la differenza tra " " e ""?
- 14. Qual è la differenza tra {0} e ""?
- 15. Qual è la differenza tra `##` e `hashCode`?
- 16. Qual è la differenza tra {0} e +?
- 17. Qual è la differenza tra .ToString() e + ""
- 18. qual è la differenza tra:.! e: r !?
- 19. Qual è la differenza tra String.Concat, string.format e +?
- 20. Differenza tra "nuovo operatore" e "operatore nuovo"?
- 21. Qual è la differenza tra "||" operatore e funzione concat in Oracle?
- 22. Qual è la differenza tra operatore e gestore di rete sim
- 23. Qual è la differenza tra, (virgola) e. (punto) come operatore di concatenazione?
- 24. Qual è la differenza tra "è Nessuno" e "== Nessuno"
- 25. Unix: Qual è la differenza tra la fonte e l'esportazione?
- 26. Qual è la differenza tra il callback e la promessa
- 27. Qual è la differenza tra la sezione .got e .got.plt?
- 28. Qual è la differenza tra la lista() e []
- 29. Qual è la differenza tra GHC e la piattaforma Haskell?
- 30. Qual è la differenza tra sé e la finestra?
* 'L'operatore + è sovraccarico' * - * sovraccarico * in che senso? – Wolf
@wolf in VB l'operatore + può eseguire sia l'aggiunta che la concatenazione, a seconda del contesto. –
Beh, ho già letto questo. Ho trovato la parola * overloaded * stessa così sovraccaricata che ho desiderato, la risposta potrebbe essere un po 'più precisa in questo punto. – Wolf