Requisito previo: String en C#
StringBuilder se utiliza para representar una string mutable de caracteres. Mutable significa la string que se puede cambiar. Entonces, los objetos String son inmutables, pero StringBuilder es el tipo de string mutable. No creará una nueva instancia modificada del objeto de string actual, pero hará las modificaciones en el objeto de string existente. La funcionalidad completa de StringBuilder la proporciona la clase StringBuilder que está presente en el espacio de System.Text
nombres.
Necesidad de StringBuilder: como se indicó anteriormente, los objetos de la clase String son inmutables, lo que significa que si el usuario modifica cualquier objeto de string, dará como resultado la creación de un nuevo objeto de string. Hace que el uso de cuerdas sea costoso. Entonces, cuando el usuario necesita las operaciones repetitivas en la string, surge la necesidad de StringBuilder. Proporciona la forma optimizada de lidiar con las operaciones de manipulación de strings múltiples y repetitivas.
Ejemplo:
// C# program to demonstrate the // difference between String, // StringBuilder using System; using System.Text; using System.Collections; class GFG { // Concatenates to String public static void concat1(String s1) { // taking a string which // is to be Concatenate String st = "forGeeks"; // using String.Concat method // you can also replace it with // s1 = s1 + "forgeeks"; s1 = String.Concat(s1, st); } // Concatenates to StringBuilder public static void concat2(StringBuilder s2) { // using Append method // of StringBuilder class s2.Append("forGeeks"); } // Main Method public static void Main(String[] args) { String s1 = "Geeks"; concat1(s1); // s1 is not changed Console.WriteLine("Using String Class: " + s1); StringBuilder s2 = new StringBuilder("Geeks"); concat2(s2); // s2 is changed Console.WriteLine("Using StringBuilder Class: " + s2); } }
Producción:
Using String Class: Geeks Using StringBuilder Class: GeeksforGeeks
Explicación:
- Uso del método concat1: En este método, estamos pasando una string » Geeks » y realizando » s1 = String.Concat(s1, st); ” donde st es “ forGeeks ” para ser concatenado. La string pasada desde Main() no cambia, esto se debe al hecho de que String es inmutable. Alterar el valor de la string crea otro objeto y s1 en concat1() almacena la referencia de la nueva string. Pero las referencias s1 en Main() y concat1() se refieren a strings diferentes.
- Uso del método concat2: en este método, pasamos una string «Geeks» y ejecutamos «s2.Append («forGeeks»)» que cambia el valor real de la string (en Main) a «GeeksforGeeks». Esto se debe al simple hecho de que StringBuilder es mutable y, por lo tanto, cambia su valor.
Cuándo usar cuál:
- Si una string va a permanecer constante a lo largo del programa, use el objeto de clase String porque un objeto String es inmutable.
- Si una string puede cambiar (ejemplo: mucha lógica y operaciones en la construcción de la string), entonces usar un StringBuilder es la mejor opción.
Conversión de String a StringBuilder:
para convertir un objeto de clase String en objeto de clase StringBuilder, simplemente pase el objeto de string al constructor de clase StringBuilder.
Ejemplo:
// C# program to demonstrate the // conversion from String to StringBuilder. using System; using System.Text; class GFG { // Main Method public static void Main(String[] args) { String str = "Geeks"; // conversion from String object // to StringBuilder StringBuilder sbl = new StringBuilder(str); sbl.Append("ForGeeks"); Console.WriteLine(sbl); } }
Producción:
GeeksForGeeks
Conversión de StringBuilder a String:
estas conversiones se pueden realizar utilizando el método ToString() .
Ejemplo:
// C# program to demonstrate the // conversion from String to StringBuilder using System; using System.Text; class GFG { // Main Method public static void Main(String[] args) { StringBuilder sbdr = new StringBuilder("Builder"); // conversion from StringBuilder // object to String using ToString method String str1 = sbdr.ToString(); Console.Write("StringBuilder object to String: "); Console.WriteLine(str1); } }
Producción:
StringBuilder object to String: Builder
Publicación traducida automáticamente
Artículo escrito por Anshul_Aggarwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA