Translate

domingo, 27 de junio de 2021

StringBuilder en C#

StringBuilder, Representa una cadena mutable. Esta clase no puede heredarse.

StringBuilder es un objeto que permite el manejo de string sin consumir tanta memoria. Normalmente se utiliza como un buffer donde podemos acumular string, dado que este objeto es mutable, utiliza menos memoria que un string. 


La propiedad StringBuilder.Length indica el número de caracteres que contiene actualmente el objeto StringBuilder. Si agrega caracteres al objeto StringBuilder, su longitud aumenta hasta igualar el tamaño de la propiedad StringBuilder.Capacity, que define el número de caracteres que puede contener el objeto. Si el número de caracteres agregados hace que la longitud del objeto StringBuilder exceda su capacidad actual, se asigna nueva memoria, se duplica el valor de la propiedad Capacity, se agregan nuevos caracteres al objeto StringBuilder y se ajusta su propiedad Length. La memoria adicional para el objeto StringBuilder se asigna dinámicamente hasta que alcanza el valor definido por la propiedad StringBuilder.MaxCapacity. Cuando se alcanza la capacidad máxima, no se puede asignar más memoria para el objeto StringBuilder e intentar agregar caracteres o expandirlo más allá de su capacidad máxima arroja una excepción ArgumentOutOfRangeException o una excepción OutOfMemoryException.

El siguiente ejemplo ilustra cómo un objeto StringBuilder asigna nueva memoria y aumenta su capacidad dinámicamente a medida que se expande la cadena asignada al objeto. El código crea un objeto StringBuilder llamando a su constructor predeterminado (sin parámetros). La capacidad predeterminada de este objeto es de 16 caracteres y su capacidad máxima es de más de 2 mil millones de caracteres. Añadiendo la cadena "Esta es una oración". da como resultado una nueva asignación de memoria porque la longitud de la cadena (19 caracteres) excede la capacidad predeterminada del objeto StringBuilder. La capacidad del objeto se duplica a 32 caracteres, se agrega la nueva cadena y la longitud del objeto ahora es igual a 19 caracteres. Luego, el código agrega la cadena "Esta es una oración adicional". al valor del objeto StringBuilder 11 veces. Siempre que la operación de agregar hace que la longitud del objeto StringBuilder exceda su capacidad, su capacidad existente se duplica y la operación de agregar tiene éxito.



Y el resultado será : 


StringBuilder provee un conjunto de constructores que permiten crear un objeto StringBuilder a partir de un string o podemos utilizar un constructor vació. Y también cuenta con un constructor que permite definir sus propiedades. 

StringBuilder provee un conjunto de métodos para acumular strings, metodo Append y para transformar un StringBuilder a string utilizamos el método ToString