37 votos

La mejor manera de romper las cadenas largas en el código fuente de C#

Me pregunto ¿cuál es la "mejor práctica" para romper las cadenas largas en el código fuente de C#. Es esta cadena

"string1"+
"string2"+
"string3"

concatenado durante la compilación o en tiempo de ejecución?

53voto

Jon Skeet Puntos 692016

Se realiza en tiempo de compilación. Eso es exactamente equivalente a "string1string2string3".

Supongamos que usted tiene:

string x = "string1string2string3"
string y = "string1" + "string2" + "string3"

El compilador apropiado realizar una pasantía tal que x e y se refieren a los mismos objetos.

EDIT: Hay un montón de hablar de StringBuilder en las respuestas y comentarios. Muchos desarrolladores parecen creer que la concatenación de cadenas debe siempre hacerse con StringBuilder. Ese es un overgeneralisation - vale la pena comprender por qué StringBuilder es bueno en algunas situaciones y en otras no.

41voto

Rune Grimstad Puntos 17775

Si el espacio en blanco no es importante, a continuación, puede utilizar el @ carácter de escape para escribir multi-línea de cadenas en el código. Esto es útil si usted tiene una consulta en su código, por ejemplo:

string query = @"SELECT whatever
FROM tableName
WHERE column = 1";

Esto le dará una cadena de texto con saltos de línea y tabulaciones, pero para una consulta que no importa.

7voto

James Newton-King Puntos 13880

Su ejemplo se concatenan en tiempo de compilación. Todas las cadenas en línea y const variables de cadena se concatenan en tiempo de compilación.

Algo a tener en cuenta es que la inclusión de cualquier readonly las cadenas de retraso concatting a tiempo de ejecución. de la cadena.Vacío y el medio Ambiente.NewLine ambos son de sólo lectura de las variables de cadena.

3voto

Maxam Puntos 2682

La concatenación se realiza en tiempo de compilación, por lo que no hay sobrecarga de tiempo de ejecución.

1voto

Sani Huttunen Puntos 10433

StringBuilder es una buena manera de ir si usted tiene muchas (más de cuatro) las cadenas de concatenar. Es más rápido.

El Uso De La Cadena.Concat en el ejemplo anterior se realiza en tiempo de compilación. Ya que son las cadenas literales son optimizado por el compilador.

Si, no obstante, el uso de variables:

string a = "string1";
string b = "string2";
string c = a + b;

Esto se hace en tiempo de ejecución.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X