Manipulación de cadenas con & o + en VB.NET

He visto varios progtwigdores usar & y + para la manipulación de cadenas.

Como:

 dim firstvar as string dim secondvar as string dim thirdvar as string thirdvar = firstvar & secondvar 

O es eso:

 thirdvar = firstvar + secondvar 

¿Importa? Si es así, ¿por qué?

Los operadores + y & no son idénticos en VB.NET.

El uso del operador & indica su intención de concatenar cadenas, mientras que el operador + indica su intención de agregar números. Usar el operador & convertirá ambos lados de la operación en cadenas. Cuando tiene tipos mixtos (un lado de la expresión es una cadena, el otro es un número), su uso del operador determinará el resultado.

 1 + "2" = 3 'This will cause a compiler error if Option Strict is on' 1 & "2" = "12" 1 & 2 = "12" "text" + 2 'Throws an InvalidCastException since "text" cannot be converted to a Double' 

Por lo tanto, mi guía (además de evitar mezclar tipos como esta) es usar las cadenas ycuando concatenan, solo para asegurar que sus intenciones sean claras para el comstackdor, y evitar errores imposibles de encontrar que involucren el uso del operador + para concatenar.

Considere si es mejor utilizar String.Format cuando concatene cadenas. Por lo general, el código termina teniendo más sentido de esa manera.

Además, si concatenas muchas veces, considera usar StringBuilder en lugar de String.

En general, & siempre concatenará cadenas independientemente de los tipos de argumentos, mientras que + no lo hará. Como no hay desventaja en el uso de & over +, en caso de que desee una concatenación de cadenas, es preferible. También hace que la intención del código sea ligeramente más clara.

El ampersand es el método recomendado. El operador más funcionará, a veces, para la concatenación de cadenas, pero no se considera correcto y ocasionalmente producirá resultados no deseados.

Son idénticos en VB.NET cuando se trabaja con 2 cadenas. El operador “&” está ahí para compatibilidad con versiones anteriores en VB 6 y versiones anteriores, donde & era el operador de concatenación de cadena, y + no funcionaba para texto.

Hay una diferencia si uno de tus dos operandos no es una cadena, como lo indica bdukes . Sin embargo, en esta situación, recomiendo usar String.Format o StringBuilder (dependiendo del número / tipo de operaciones) para construir la cadena resultante de tipos mixtos.

En general, recomendaría usar +, por una sola razón. Si alguna vez decide traducir el código a otro idioma (es decir, C #), el operador + coincidirá más con la versión traducida. Probablemente sea más fácil para las personas que provienen de otro idioma comprender y seguir su código.

Independientemente de los numerosos consejos para “apegarse a uno u otro”, depende en gran medida lo que combine.

En resumen, usaría “&” para cadenas y “+” solo para operaciones aritméticas

¿Por qué? Eche un vistazo a https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/operators/addition-operator#remarks

Todas estas combinaciones con alternar la opción estricta son como tirar los dados para el comstackdor … y nunca es obvio para el lector.

También agregaré https://docs.microsoft.com/en-us/dotnet/visual-basic/programming-guide/language-features/operators-and-expressions/concatenation-operators#differences-between-the-two- concatenación-operadores con la statement clara:

El + Operador tiene el objective principal de agregar dos números.