una - manejo de cadenas c#
Concatenación de cadenas con el operador ''+'' (1)
No lo hace - el compilador de C # lo hace :)
Entonces este código:
string x = "hello";
string y = "there";
string z = "chaps";
string all = x + y + z;
en realidad se compila como:
string x = "hello";
string y = "there";
string z = "chaps";
string all = string.Concat(x, y, z);
(Gah - la edición intermedia eliminó otros bits accidentalmente)
El beneficio del compilador de C # al darse cuenta de que hay múltiples concatenaciones de cadenas aquí es que no se termina creando una cadena intermedia de x + y
que luego se debe copiar de nuevo como parte de la concatenación de (x + y)
y z
. En cambio, lo hacemos todo de una vez.
EDITAR: Tenga en cuenta que el compilador no puede hacer nada si concatena en un bucle. Por ejemplo, este código:
string x = "";
foreach (string y in strings)
{
x += y;
}
simplemente termina como equivalente a:
string x = "";
foreach (string y in strings)
{
x = string.Concat(x, y);
}
... así que esto genera una gran cantidad de basura, y es por eso que debe usar un StringBuilder
para tales casos. Tengo un artículo que entra en más detalles acerca de los dos que, afortunadamente, responderán más preguntas.
Al mirar los metadatos de la clase de string
, solo veo los operadores ==
y !=
Sobrecargados. Entonces, ¿cómo es posible realizar la concatenación para el operador '' +
''?
Editar :
Algunas notas interesantes de Eric Lippert sobre la concatenación de cadenas:
También hay un súper artículo de Joel referido en la parte 2 ( http://www.joelonsoftware.com/articles/fog0000000319.html )