una ultimos tipo texto obtener los longitud invertida extraer caracteres cadenas cadena c# stringbuilder

ultimos - obtener cadena c#



¿Cómo anexar dos constructores de cadenas? (6)

¿Hay una manera de agregar dos constructores de cadena? Y si es así, ¿se desempeña mejor que agregando una cadena a un StringBuilder?


Así....

StringBuilder sb = new StringBuilder(); StringBuilder sb1 = new StringBuilder(); sb.Append(sb1.ToString());


Esto lo hará sin asignaciones.

StringBuilder sb = new StringBuilder("aaaa"); StringBuilder second = new StringBuilder("bbbbb"); sb.EnsureCapacity(sb.Length + second.Length); for (int i = 0; i < second.Length; i++) { sb.Append(second[i]); }


No necesita llamar a .ToString (). Simplemente debe añadir uno a otro. Eso es todo. Será mejor contra la llamada directa .ToString () por la siguiente razón:

1) StringBuilder no tiene un constructor con StringBuilder como param, string, int / string, etc. StringBuilder reemplaza a .ToString () y como resultado:

StringBuilder sb1 = new StringBuilder("1"); sb1.Append(new StringBuilder("2")); Console.WriteLine(sb1);

ese código llamará automáticamente a la versión anulada de .ToString (). La salida será "12";

2) Si StringBuilder se agregará como parámetro entrante a los constructores de StringBuilder en las próximas versiones del marco, su código estará claro y listo para ser agregado correctamente sin ninguna refactorización.

¡Tenga un buen día!


Sé que esto es tres años después, pero .NET 4 StringBuilder comporta de manera diferente de todos modos.

Sin embargo, todavía vuelve a "¿qué quieres hacer?" ¿Está buscando simplemente la forma más eficaz de agregar dos StringBuilders y continuar con el último resultado? ¿O espera continuar trabajando con el valor almacenado en búfer existente del StringBuilder añadido?

Para los primeros, y siempre en .NET 4,

frontStringBuilder.Append(backStringBuilder);

es mejor.

Para el último escenario en .NET 2 / 3.5,

frontStringBuilder.Append(backStringBuilder.ToString(0, backStringBuilder.Length));

es mejor (y no afectará el rendimiento en .NET 4).


Si el StringBuilder es grande, esto minimizará las asignaciones de cadenas (especialmente si puede proporcionar un búfer de caracteres reutilizable):

public static void CopyTo(this StringBuilder source, StringBuilder dest) { char[] buffer = new char[Math.Min(source.Length, 1024)]; CopyTo(source, dest, buffer); } public static void CopyTo(this StringBuilder source, StringBuilder dest, char[] buffer) { dest.EnsureCapacity(dest.Length + source.Length); for (int i = 0; i < source.Length; i += buffer.Length) { int charCount = Math.Min(source.Length - i, buffer.Length); source.CopyTo(i, buffer, 0, charCount); dest.Append(buffer, 0, charCount); } }


Simplemente así:

firstStringBuilder.Append(secondStringBuilder.ToString());