StringBuilder (Clase)
Ensamblado: mscorlib (en mscorlib.dll)
[SerializableAttribute] [ComVisibleAttribute(true)] public sealed class StringBuilder : ISerializable
/** @attribute SerializableAttribute() */ /** @attribute ComVisibleAttribute(true) */ public final class StringBuilder implements ISerializable
SerializableAttribute ComVisibleAttribute(true) public final class StringBuilder implements ISerializable
Esta clase representa una cadena como un objeto, cuyo valor es una secuencia de caracteres modificable. Se dice que el valor es modificable porque puede cambiarse una vez se ha creado mediante la adición, sustracción, sustitución o inserción de caracteres. Para comparar, vea la clase String.
La mayoría de los métodos que modifican una instancia de esta clase, devuelven una referencia a esa misma instancia. Dado que se devuelve una referencia a la instancia, se puede llamar a un método o a una propiedad en una referencia. Esto puede ser conveniente si lo que se pretende es escribir una única instrucción que encadene sucesivas operaciones.
La capacidad de un StringBuilder corresponde al mayor número de caracteres que la instancia pueda almacenar en un tiempo determinado, y es mayor o igual que la longitud de la representación de la cadena del valor de la instancia. La capacidad puede incrementarse o disminuirse mediante la propiedad Capacity o bien mediante el método EnsureCapacity pero no puede ser menor que el valor de la propiedad Length.
Se usan valores predeterminados específicos de la implementación si no se especifica la capacidad o la capacidad máxima al inicializarse una instancia de StringBuilder.
Consideraciones de rendimiento
Los métodos Concat y AppendFormat concatenan los nuevos datos en un objeto String o StringBuilder existente. La operación de concatenación en un objeto String siempre crea un nuevo objeto a partir de la cadena existente y los nuevos datos. Un objeto StringBuilder mantiene un búfer para alojar la concatenación de nuevos datos. Los nuevos datos se anexan al final del búfer si hay espacio disponible; de lo contrario, se asigna un nuevo búfer más grande, los datos del búfer original se copian en el nuevo búfer y, a continuación, los nuevos datos se anexan al nuevo búfer.
El rendimiento de una operación de concatenación para un objeto String o StringBuilder depende de la frecuencia con que se produzca la asignación de memoria. La operación de concatenación en un objeto String siempre asigna memoria, mientras que la operación de concatenación en un objeto StringBuilder sólo asigna memoria si el búfer del objeto StringBuilder es demasiado pequeño para alojar los nuevos datos. Por ello, la clase String es preferible para una operación de la concatenación si un se concatena un número fijo de objetos String. En ese caso, el compilador podría combinar en una única operación cada una de las operaciones de concatenación. Los objetos StringBuilder son preferibles para las operaciones de concatenación si se concatena un número arbitrario de cadenas; por ejemplo, si un bucle concatena un número aleatorio de cadenas de datos proporcionados por el usuario.
En el ejemplo de código siguiente se muestra cómo llamar a muchos de los métodos que define la clase StringBuilder.
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <atlas:ScriptManager runat="server" ID="ScriptManager1"> </atlas:ScriptManager> </form> </body> </html> <script type="text/javascript"> Type.registerNamespace('Samples'); Samples.StringBuilderExample = function() { this._headTagStart = "<head>"; this._headTagEnd = "</head>"; this._titleTagStart = "<title>"; this._titleTagEnd = "</title>"; } Samples.StringBuilderExample.prototype = { buildString: function(title) { try { if (title === undefined) throw Error.argumentUndefined('title'); if (title === null) throw Error.argumentNull('title'); var sb = new Sys.StringBuilder(this._headTagStart); sb.append(this._titleTagEnd); sb.append(title); sb.append(this._titleTagEnd); sb.append(this._headTagEnd); // Displays: "The result is: <head><title>A Title</title></head>" alert("The result is: " + sb.toString()); } catch(e) { // If debug mode then write extended exception information to the page. // Otherwise, show an alert. if(debug.isDebug) { var msg = "(DEBUG MODE)</p>A CLIENT-SIDE RUNTIME EXCEPTION OCCURED:</p>" + e.message; document.write(msg); } else { alert(e.message); } } } } Samples.StringBuilderExample.registerClass('Samples.StringBuilderExample'); var StringBuilderSampleVar = new Samples.StringBuilderExample(); var title = "A Title"; StringBuilderSampleVar.buildString(title); </script>
Windows 98, Windows 2000 Service Pack 4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter
Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.