C# | String vs StringBuilder – Part 1

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.Textnombres.

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *