En cada sitio que habla de VBScript, el operador '&
' aparece como el operador de concatenación de cadenas. Sin embargo, en algún código que he heredado recientemente, veo que se está utilizando el operador '+
' y no veo ningún error como resultado de esto. ¿Es esta una alternativa aceptada?¿Cuál es la diferencia entre VBScript's y el operador &?
Respuesta
El operador + está sobrecargado, mientras que el operador & no lo está. El operador & solo hace concatenación de cadenas. En algunos círculos, el operador & se utiliza como una práctica recomendada porque no es ambiguo y, por lo tanto, no puede tener ningún efecto imprevisto como resultado de la sobrecarga.
+
operador puede ser contraproducente cuando las cadenas se pueden interpretar como números. Si no quieres sorpresas desagradables, utiliza & para concatenar cadenas.
El operador &
realiza la concatenación de cadenas, es decir, fuerza a los operandos a convertirse en cadenas (como llamar primero a CStr
). +
, a su vez, obliga a la adición si una de las expresiones es numérica. Por ejemplo:
1 & 2
le da 12
, mientras que
1 + 2
"1" + 2
1 + "2"
le dan 3
.
Por lo tanto, se recomienda utilizar &
para la concatenación de cadenas ya que elimina la ambigüedad.
+1 para especificar el número de cadena + número. La respuesta aceptada no menciona vbscript convertir cadenas numéricas en números. – baacke
En algunos casos, el + lanzará una excepción; por ejemplo el siguiente:
Sub SimpleObject_FloatPropertyChanging(fvalue, cancel)
'fvalue is a floating point number
MsgBox "Received Event: " + fvalue
End Sub
Usted recibirá una excepción cuando la fuente de objeto COM desencadena el evento - que debe hacer una de las siguientes:
MsgBox "Received Event: " & fvalue
o
MsgBox "Received Event: " + CStr(fvalue)
Se puede ser mejor en ambos casos para usar CStr(value)
; pero usar & por encima de los comentarios para la concatenación de cadenas es casi siempre la mejor práctica.
- 1. ¿Cuál es la diferencia entre el nuevo operador y Class.newInstance()?
- 2. ¿Cuál es la diferencia entre el operador "=" y "==" en Bash?
- 3. ¿Cuál es la diferencia entre '->' (operador de flecha) y '.' (operador de punto) en Objective-C?
- 4. cuál es la diferencia entre operador de punto y operador de resolución de alcance
- 5. ¿cuál es la diferencia entre:.! y: r !?
- 6. ¿Cuál es la diferencia entre .ToString (+) y ""
- 7. Cuál es la diferencia entre $ y jQuery
- 8. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 9. ¿Cuál es la diferencia entre dict() y {}?
- 10. Cuál es la diferencia entre $ (...) y `...`
- 11. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 12. En Actionscript 3, ¿cuál es la diferencia entre el operador "in" y el método "hasOwnProperty"?
- 13. ¿Cuál es la diferencia entre {0} y ""?
- 14. Cuál es la diferencia entre = y: =
- 15. ¿Cuál es la diferencia entre ".equals" y "=="?
- 16. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 17. ¿Cuál es la diferencia entre + = y = +?
- 18. ¿Cuál es la diferencia entre " " y ""?
- 19. ¿Cuál es la diferencia entre is_a y instanceof?
- 20. ¿Cuál es la diferencia entre el NSImage y el UIImage?
- 21. ¿Cuál es la diferencia entre el tenedor y el hilo?
- 22. ¿cuál es la diferencia entre el objetivo y el proyecto?
- 23. Backbone.Js - ¿Cuál es la diferencia entre el y $ el?
- 24. ¿Cuál es la diferencia entre el mango y el hilo?
- 25. ¿Cuál es la diferencia entre el JSP y el JSTL?
- 26. ¿Cuál es la diferencia entre el colado y la coerción?
- 27. ¿cuál es la diferencia entre el complemento y la biblioteca?
- 28. ¿Cuál es la diferencia entre el casting y la conversión?
- 29. ¿cuál es la diferencia entre el material y la textura?
- 30. ¿Cuál es la diferencia entre el marco y la arquitectura?
* 'El operador + está sobrecargado * * * * sobrecargado * ¿en qué sentido? – Wolf
@wolf en VB el operador + puede hacer suma y concatenación, según el contexto. –
Bueno, ya leí esto. Encontré la palabra * sobrecargada * tan sobrecargada que deseé, la respuesta podría ser un poco más precisa en este punto. – Wolf