Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Classe StringBuilder

 

Data di pubblicazione: ottobre 2016

Rappresenta una stringa modificabile di caratteri. Questa classe non può essere ereditata.

Per esaminare il codice sorgente di .NET Framework per questo tipo, vedere il Reference Source.

Spazio dei nomi:   System.Text
Assembly:  mscorlib (in mscorlib.dll)

System.Object
  System.Text.StringBuilder

[SerializableAttribute]
[ComVisibleAttribute(true)]
public sealed class StringBuilder : ISerializable

NomeDescrizione
System_CAPS_pubmethodStringBuilder()

Inizializza una nuova istanza della classe StringBuilder.

System_CAPS_pubmethodStringBuilder(Int32)

Inizializza una nuova istanza della classe StringBuilder usando la capacità specificata.

System_CAPS_pubmethodStringBuilder(Int32, Int32)

Inizializza una nuova istanza della classe StringBuilder che inizia con una capacità specificata e può raggiungere un valore massimo specificato.

System_CAPS_pubmethodStringBuilder(String)

Inizializza una nuova istanza della classe StringBuilder usando la stringa specificata.

System_CAPS_pubmethodStringBuilder(String, Int32)

Inizializza una nuova istanza della classe StringBuilder usando la stringa e la capacità specificate.

System_CAPS_pubmethodStringBuilder(String, Int32, Int32, Int32)

Inizializza una nuova istanza della classe StringBuilder dalla sottostringa e la capacità specificate.

NomeDescrizione
System_CAPS_pubpropertyCapacity

Ottiene o imposta il numero massimo di caratteri che possono essere contenuti nella memoria allocata dall'istanza corrente.

System_CAPS_pubpropertyChars[Int32]

Ottiene o imposta il carattere nella posizione del carattere specificata in questa istanza.

System_CAPS_pubpropertyLength

Ottiene o imposta la lunghezza dell'oggetto StringBuilder corrente.

System_CAPS_pubpropertyMaxCapacity

Ottiene la capacità massima di questa istanza.

NomeDescrizione
System_CAPS_pubmethodAppend(Boolean)

Accoda la rappresentazione di stringa di un valore booleano specificato a questa istanza.

System_CAPS_pubmethodAppend(Byte)

Accoda la rappresentazione di stringa di un intero senza segno a 8 bit specificato a questa istanza.

System_CAPS_pubmethodAppend(Char)

Accoda la rappresentazione di stringa di un oggetto Char specificato a questa istanza.

System_CAPS_pubmethodAppend(Char*, Int32)

Accoda a questa istanza una matrice di caratteri Unicode a partire da un indirizzo specificato.

System_CAPS_pubmethodAppend(Char, Int32)

Accoda un numero specificato di copie della rappresentazione di stringa di un carattere Unicode a questa istanza.

System_CAPS_pubmethodAppend(Char[])

Accoda la rappresentazione di stringa dei caratteri Unicode in una matrice specificata a questa istanza.

System_CAPS_pubmethodAppend(Char[], Int32, Int32)

Accoda la rappresentazione di stringa di una sottomatrice specificata di caratteri Unicode a questa istanza.

System_CAPS_pubmethodAppend(Decimal)

Accoda la rappresentazione di stringa di un numero decimale specificato a questa istanza.

System_CAPS_pubmethodAppend(Double)

Accoda la rappresentazione di stringa di un numero a virgola mobile a precisione doppia specificato a questa istanza.

System_CAPS_pubmethodAppend(Int16)

Accoda la rappresentazione di stringa di un intero con segno a 16 bit specificato a questa istanza.

System_CAPS_pubmethodAppend(Int32)

Accoda la rappresentazione di stringa di un intero con segno a 32 bit specificato a questa istanza.

System_CAPS_pubmethodAppend(Int64)

Accoda la rappresentazione di stringa di un intero con segno a 64 bit specificato a questa istanza.

System_CAPS_pubmethodAppend(Object)

Accoda la rappresentazione di stringa di un oggetto specificato a questa istanza.

System_CAPS_pubmethodAppend(SByte)

Accoda la rappresentazione di stringa di un intero con segno a 8 bit specificato a questa istanza.

System_CAPS_pubmethodAppend(Single)

Accoda la rappresentazione di stringa di un numero a virgola mobile a precisione singola specificato a questa istanza.

System_CAPS_pubmethodAppend(String)

Accoda una copia della stringa specificata a questa istanza.

System_CAPS_pubmethodAppend(String, Int32, Int32)

Accoda una copia della sottostringa specificata a questa istanza.

System_CAPS_pubmethodAppend(UInt16)

Accoda la rappresentazione di stringa di un intero senza segno a 16 bit specificato a questa istanza.

System_CAPS_pubmethodAppend(UInt32)

Accoda la rappresentazione di stringa di un intero senza segno a 32 bit specificato a questa istanza.

System_CAPS_pubmethodAppend(UInt64)

Accoda la rappresentazione di stringa di un intero senza segno a 64 bit specificato a questa istanza.

System_CAPS_pubmethodAppendFormat(IFormatProvider, String, Object)

Accoda la stringa restituita dall'elaborazione di una stringa in formato composito, che contiene zero o più elementi di formato, a questa istanza. Ogni elemento di formato viene sostituito dalla rappresentazione di stringa di un singolo argomento usando un provider del formato specificato.

System_CAPS_pubmethodAppendFormat(IFormatProvider, String, Object, Object)

Accoda la stringa restituita dall'elaborazione di una stringa in formato composito, che contiene zero o più elementi di formato, a questa istanza. Ogni elemento di formato viene sostituito dalla rappresentazione di stringa di uno di due argomenti usando un provider del formato specificato.

System_CAPS_pubmethodAppendFormat(IFormatProvider, String, Object, Object, Object)

Accoda la stringa restituita dall'elaborazione di una stringa in formato composito, che contiene zero o più elementi di formato, a questa istanza. Ogni elemento di formato viene sostituito dalla rappresentazione di stringa di uno di tre argomenti usando un provider del formato specificato.

System_CAPS_pubmethodAppendFormat(IFormatProvider, String, Object[])

Accoda la stringa restituita dall'elaborazione di una stringa in formato composito, che contiene zero o più elementi di formato, a questa istanza. Ogni elemento di formato viene sostituito dalla rappresentazione di stringa di un argomento corrispondente in una matrice di parametri usando un provider del formato specificato.

System_CAPS_pubmethodAppendFormat(String, Object)

Accoda la stringa restituita dall'elaborazione di una stringa in formato composito, che contiene zero o più elementi di formato, a questa istanza. Ogni elemento di formato viene sostituito dalla rappresentazione di stringa di un singolo argomento.

System_CAPS_pubmethodAppendFormat(String, Object, Object)

Accoda la stringa restituita dall'elaborazione di una stringa in formato composito, che contiene zero o più elementi di formato, a questa istanza. Ogni elemento di formato viene sostituito dalla rappresentazione di stringa di uno dei due argomenti.

System_CAPS_pubmethodAppendFormat(String, Object, Object, Object)

Accoda la stringa restituita dall'elaborazione di una stringa in formato composito, che contiene zero o più elementi di formato, a questa istanza. Ogni elemento di formato viene sostituito dalla rappresentazione di stringa di uno dei tre argomenti.

System_CAPS_pubmethodAppendFormat(String, Object[])

Accoda la stringa restituita dall'elaborazione di una stringa in formato composito, che contiene zero o più elementi di formato, a questa istanza. Ogni elemento di formato viene sostituito dalla rappresentazione di stringa di un argomento corrispondente in una matrice di parametri.

System_CAPS_pubmethodAppendLine()

Accoda il terminatore di riga predefinito alla fine dell'oggetto StringBuilder corrente.

System_CAPS_pubmethodAppendLine(String)

Accoda una copia della stringa specificata seguita dal terminatore di riga predefinito alla fine dell'oggetto StringBuilder corrente.

System_CAPS_pubmethodClear()

Rimuove tutti i caratteri dall'istanza di StringBuilder corrente.

System_CAPS_pubmethodCopyTo(Int32, Char[], Int32, Int32)

Copia i caratteri da un segmento specificato di questa istanza a un segmento specificato di una matrice Char di destinazione.

System_CAPS_pubmethodEnsureCapacity(Int32)

Garantisce che la capacità di questa istanza di StringBuilder corrisponda almeno al valore specificato.

System_CAPS_pubmethodEquals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object.)

System_CAPS_pubmethodEquals(StringBuilder)

Restituisce un valore che indica se questa istanza è uguale ad un oggetto specificato.

System_CAPS_pubmethodGetHashCode()

Funge da funzione hash predefinita.(Ereditato da Object.)

System_CAPS_pubmethodGetType()

Ottiene l'oggetto Type dell'istanza corrente.(Ereditato da Object.)

System_CAPS_pubmethodInsert(Int32, Boolean)

Inserisce la rappresentazione di stringa di un valore booleano in questa istanza nella posizione del carattere specificata.

System_CAPS_pubmethodInsert(Int32, Byte)

Inserisce la rappresentazione di stringa di un intero senza segno a 8 bit specificato in questa istanza nella posizione del carattere specificata.

System_CAPS_pubmethodInsert(Int32, Char)

Inserisce la rappresentazione di stringa di un carattere Unicode specificato in questa istanza nella posizione del carattere specificata.

System_CAPS_pubmethodInsert(Int32, Char[])

Inserisce la rappresentazione di stringa di una matrice specificata di caratteri Unicode in questa istanza nella posizione del carattere specificata.

System_CAPS_pubmethodInsert(Int32, Char[], Int32, Int32)

Inserisce la rappresentazione di stringa di una sottomatrice specificata di caratteri Unicode in questa istanza nella posizione del carattere specificata.

System_CAPS_pubmethodInsert(Int32, Decimal)

Inserisce la rappresentazione di stringa di un numero decimale in questa istanza nella posizione del carattere specificata.

System_CAPS_pubmethodInsert(Int32, Double)

Inserisce la rappresentazione di stringa di un numero a virgola mobile a precisione doppia in questa istanza nella posizione del carattere specificata.

System_CAPS_pubmethodInsert(Int32, Int16)

Inserisce la rappresentazione di stringa di un intero con segno a 16 bit specificato in questa istanza nella posizione del carattere specificata.

System_CAPS_pubmethodInsert(Int32, Int32)

Inserisce la rappresentazione di stringa di un intero con segno a 32 bit specificato in questa istanza nella posizione del carattere specificata.

System_CAPS_pubmethodInsert(Int32, Int64)

Inserisce la rappresentazione di stringa di un intero con segno a 64 bit in questa istanza nella posizione del carattere specificata.

System_CAPS_pubmethodInsert(Int32, Object)

Inserisce la rappresentazione di stringa di un oggetto in questa istanza nella posizione del carattere specificata.

System_CAPS_pubmethodInsert(Int32, SByte)

Inserisce la rappresentazione di stringa di un intero con segno a 8 bit specificato in questa istanza nella posizione del carattere specificata.

System_CAPS_pubmethodInsert(Int32, Single)

Inserisce la rappresentazione di stringa di un numero a virgola mobile a precisione singola in questa istanza nella posizione del carattere specificata.

System_CAPS_pubmethodInsert(Int32, String)

Inserisce una stringa in questa istanza nella posizione del carattere specificata.

System_CAPS_pubmethodInsert(Int32, String, Int32)

Inserisce una o più copie di una stringa specificata in questa istanza nella posizione del carattere specificata.

System_CAPS_pubmethodInsert(Int32, UInt16)

Inserisce la rappresentazione di stringa di un intero senza segno a 16 bit in questa istanza nella posizione del carattere specificata.

System_CAPS_pubmethodInsert(Int32, UInt32)

Inserisce la rappresentazione di stringa di un intero senza segno a 32 bit in questa istanza nella posizione del carattere specificata.

System_CAPS_pubmethodInsert(Int32, UInt64)

Inserisce la rappresentazione di stringa di un intero senza segno a 64 bit in questa istanza nella posizione del carattere specificata.

System_CAPS_pubmethodRemove(Int32, Int32)

Rimuove l'intervallo di caratteri specificato da questa istanza.

System_CAPS_pubmethodReplace(Char, Char)

Sostituisce tutte le occorrenze di un carattere specificato in questa istanza con un altro carattere specificato.

System_CAPS_pubmethodReplace(Char, Char, Int32, Int32)

Sostituisce tutte le occorrenze di un carattere specificato in una sottostringa di questa istanza con un altro carattere specificato.

System_CAPS_pubmethodReplace(String, String)

Sostituisce tutte le occorrenze di una stringa specificata in questa istanza con un'altra stringa specificata.

System_CAPS_pubmethodReplace(String, String, Int32, Int32)

Sostituisce tutte le occorrenze di una stringa specificata in una sottostringa di questa istanza con un'altra stringa specificata.

System_CAPS_pubmethodToString()

Converte il valore di questa istanza in un oggetto String.(Esegue l'override di Object.ToString().)

System_CAPS_pubmethodToString(Int32, Int32)

Converte il valore di una sottostringa di questa istanza in un oggetto String.

NomeDescrizione
System_CAPS_pubinterfaceSystem_CAPS_privmethodISerializable.GetObjectData(SerializationInfo, StreamingContext)

Questa API supporta l'infrastruttura prodotto e non può essere usata direttamente dal codice. Popola un oggetto System.Runtime.Serialization.SerializationInfo con i dati necessari per deserializzare l'oggetto StringBuilder corrente.

System_CAPS_noteNota

Per visualizzare il codice sorgente di .NET Framework per questo tipo, vedere il Reference Source. È possibile esplorare il codice sorgente online, scaricare i riferimenti per la visualizzazione offline e scorrere le origini (inclusi aggiornamenti e patch) durante l'esecuzione del debug. see instructions.

Questa classe rappresenta un oggetto stringa il cui valore è una sequenza mutabile di caratteri.

Contenuto della sezione:

Sebbene StringBuilder e String entrambi rappresentano infatti sequenze di caratteri, vengono implementate in modo diverso. String è un tipo non modificabile. Vale a dire, ogni operazione che viene visualizzato per modificare un String oggetto crea una nuova stringa.

Ad esempio, la chiamata per il String.Concat metodo nell'esempio c# seguente viene visualizzato per modificare il valore di una variabile stringa denominata value. Infatti, il Concat metodo restituisce un value oggetto che ha un valore diverso e un indirizzo dal value oggetto passato al metodo. Si noti che l'esempio deve essere compilata con la /unsafe l'opzione del compilatore.

using System;

public class Example
{
   public unsafe static void Main()
   {
      string value = "This is the first sentence" + ".";
      fixed (char* start = value)
      {
         value = String.Concat(value, "This is the second sentence. ");
         fixed (char* current = value)
         {
            Console.WriteLine(start == current);
         }
      }   
   }
}
// The example displays the following output:
//      False

Per le routine che la modifica delle stringhe complete (ad esempio, le applicazioni che modificano una stringa più volte in un ciclo), modifica di una stringa ripetutamente possibile esatte una riduzione significativa delle prestazioni. L'alternativa consiste nell'utilizzare StringBuilder, che è una stringa modificabile di classe. Modificabilità significa che dopo aver creata un'istanza della classe, può essere modificato aggiungendo, rimuovendo, sostituendo o inserimento di caratteri. Oggetto StringBuilder oggetto gestisce un buffer per includere le espansioni alla stringa. Nuovi dati vengono aggiunti al buffer se spazio è disponibile. in caso contrario, viene allocato uno nuovo, più grande, dati dal buffer originale vengono copiati nel nuovo buffer e i nuovi dati viene quindi aggiunto al nuovo buffer.

System_CAPS_importantImportante

Sebbene la StringBuilder classe offre in genere prestazioni migliori rispetto alla String classe, è consigliabile non sostituire automaticamente String con StringBuilder ogni volta che si desidera modificare le stringhe. Le prestazioni dipendono dalle dimensioni della stringa, dalla quantità di memoria da allocare per la nuova stringa, dal sistema sul quale l'applicazione è in esecuzione e dal tipo di operazione. È consigliabile essere preparati testare l'app per determinare se StringBuilder effettivamente offre un miglioramento significativo delle prestazioni.

Si consiglia di utilizzare la String classe nei seguenti casi:

  • Quando il numero di modifiche che renderà l'applicazione in una stringa è piccolo. In questi casi, StringBuilder potrebbe essere offerta trascurabile o alcun miglioramento delle prestazioni su String.

  • Quando si esegue un numero fisso di operazioni di concatenazione, in particolare con i valori letterali stringa. In questo caso, il compilatore potrebbe combinare le operazioni di concatenazione in un'unica operazione.

  • Quando è necessario eseguire le operazioni di ricerca completa mentre si compila la stringa. La StringBuilder classe manca metodi di ricerca, ad esempio IndexOf o StartsWith. È necessario convertire il StringBuilder dell'oggetto a un String per queste operazioni e questo può negare il miglioramento delle prestazioni dall'utilizzo di StringBuilder. Per ulteriori informazioni, vedere il la ricerca del testo in un oggetto StringBuilder sezione.

Si consiglia di utilizzare la StringBuilder classe nei seguenti casi:

  • Quando si prevede l'applicazione per rendere un numero sconosciuto di modifiche in una stringa in fase di progettazione (ad esempio, quando si utilizza un ciclo per concatenare un numero casuale di stringhe che contengono l'input dell'utente).

  • Quando si prevede l'applicazione per rendere un numero significativo di modifiche in una stringa.

Il StringBuilder.Length proprietà indica il numero di caratteri di StringBuilder oggetto contiene attualmente. Se si aggiungono caratteri per il StringBuilder dell'oggetto, la sua lunghezza aumenta fino a quando non è uguale a quella della StringBuilder.Capacity proprietà, che definisce il numero di caratteri che può contenere l'oggetto. Se il numero di caratteri aggiunti fa sì che la lunghezza del StringBuilder oggetto supera la capacità corrente, la nuova memoria viene allocata, il valore della Capacity proprietà viene raddoppiata, vengono aggiunti nuovi caratteri per il StringBuilder oggetto e il relativo Length proprietà. Memoria aggiuntiva per il StringBuilder oggetto viene allocato in modo dinamico finché raggiunge il valore definito per il StringBuilder.MaxCapacity proprietà. Quando viene raggiunta la capacità massima, ulteriore memoria non può essere allocata per il StringBuilder oggetto e si tenta di aggiungere caratteri o espanderlo oltre alla capacità massima genera un'eccezione un ArgumentOutOfRangeException o OutOfMemoryException (eccezione).

Nell'esempio seguente viene illustrato come un StringBuilder oggetto alloca nuova memoria e aumenta la capacità in modo dinamico come si espande la stringa assegnata all'oggetto. Il codice crea un StringBuilder oggetto chiamando il costruttore predefinito (senza parametri). La capacità predefinita di questo oggetto è 16 caratteri e alla capacità massima è superiore a 2 miliardi di caratteri. Aggiungere la stringa "È una frase". risultati in una nuova allocazione di memoria perché la lunghezza della stringa (19 caratteri) supera la capacità predefinita di StringBuilder oggetto. La capacità dell'oggetto raddoppia a 32 caratteri, viene aggiunta la nuova stringa e la durata dell'oggetto è uguale a questo punto 19 caratteri. Il codice aggiunge quindi la stringa "È una frase aggiuntiva". il valore di StringBuilder oggetto 11 volte. Ogni volta che l'operazione di Accodamento fa sì che la lunghezza di StringBuilder oggetto al superamento della capacità, la capacità esistente viene raddoppiato e Append operazione ha esito positivo.

using System;
using System.Reflection;
using System.Text;

public class Example
{
   public static void Main()
   {
      StringBuilder sb = new StringBuilder();
      ShowSBInfo(sb);
      sb.Append("This is a sentence.");
      ShowSBInfo(sb);
      for (int ctr = 0; ctr <= 10; ctr++) {
         sb.Append("This is an additional sentence.");
         ShowSBInfo(sb);
      }   
   }

   private static void ShowSBInfo(StringBuilder sb)
   {
      foreach (var prop in sb.GetType().GetProperties()) {
         if (prop.GetIndexParameters().Length == 0)
            Console.Write("{0}: {1:N0}    ", prop.Name, prop.GetValue(sb));
      }
      Console.WriteLine();
   }
}
// The example displays the following output:
//    Capacity: 16    MaxCapacity: 2,147,483,647    Length: 0
//    Capacity: 32    MaxCapacity: 2,147,483,647    Length: 19
//    Capacity: 64    MaxCapacity: 2,147,483,647    Length: 50
//    Capacity: 128    MaxCapacity: 2,147,483,647    Length: 81
//    Capacity: 128    MaxCapacity: 2,147,483,647    Length: 112
//    Capacity: 256    MaxCapacity: 2,147,483,647    Length: 143
//    Capacity: 256    MaxCapacity: 2,147,483,647    Length: 174
//    Capacity: 256    MaxCapacity: 2,147,483,647    Length: 205
//    Capacity: 256    MaxCapacity: 2,147,483,647    Length: 236
//    Capacity: 512    MaxCapacity: 2,147,483,647    Length: 267
//    Capacity: 512    MaxCapacity: 2,147,483,647    Length: 298
//    Capacity: 512    MaxCapacity: 2,147,483,647    Length: 329
//    Capacity: 512    MaxCapacity: 2,147,483,647    Length: 360

La capacità predefinita di un StringBuilder oggetto è 16 caratteri e alla capacità massima predefinita è Int32.MaxValue. Vengono utilizzati questi valori predefiniti se si chiama il StringBuilder() e StringBuilder(String) costruttori.

È possibile definire in modo esplicito la capacità iniziale di un StringBuilder oggetto nei modi seguenti:

  • Chiamata del StringBuilder costruttori che include un capacity parametro quando si crea l'oggetto.

  • Assegnando in modo esplicito un nuovo valore per la StringBuilder.Capacity proprietà da espandere esistente StringBuilder oggetto. Si noti che la proprietà genera un'eccezione se la nuova capacità è minore di esistente maggiore di o la capacità di StringBuilder capacità massima dell'oggetto.

  • Chiamando il StringBuilder.EnsureCapacity metodo con la nuova capacità. La nuova capacità non deve essere maggiore di StringBuilder capacità massima dell'oggetto. Tuttavia, a differenza di un'assegnazione di Capacity proprietà EnsureCapacity non genera un'eccezione se la nuova capacità desiderata è inferiore alla capacità esistente; in questo caso, la chiamata al metodo ha effetto.

Se la lunghezza della stringa assegnata al StringBuilder oggetto nella chiamata al costruttore supera la capacità predefinita o la capacità specificata, il Capacity proprietà è impostata la lunghezza della stringa specificata con il value parametro.

È possibile definire in modo esplicito la capacità massima di un StringBuilder oggetto chiamando il StringBuilder(Int32, Int32) costruttore. Non è possibile modificare la capacità massima assegnando un nuovo valore per la MaxCapacity proprietà, perché è di sola lettura.

Nella sezione precedente mostra, ogni volta che la capacità esistente è memoria insufficiente, aggiuntiva viene allocato e la capacità di un StringBuilder Double fino al valore definito dall'oggetto di MaxCapacity proprietà.

In generale, la capacità predefinita e la capacità massima sono adeguate per la maggior parte delle applicazioni. È possibile impostare questi valori nelle condizioni seguenti:

  • Se le dimensioni finali di StringBuilder oggetto condizione potrebbe diventare estremamente grande, in genere eccedenti diversi megabyte. In questo caso, è possibile miglioramento delle prestazioni dall'impostazione iniziale Capacity proprietà su un valore molto elevato per eliminare la necessità di troppi riallocazione di memoria.

  • Se l'applicazione è in esecuzione in un sistema con memoria limitata. In questo caso, è consigliabile impostare il MaxCapacity proprietà minore Int32.MaxValue Se l'app gestisca stringhe di grandi dimensioni che possono causare l'esecuzione in un ambiente di memoria vincolata.

Creare un StringBuilder oggetto chiamando uno dei sei costruttori classe di overload, che sono elencate nella tabella seguente. Tre dei costruttori di creare un'istanza di un StringBuilder oggetto il cui valore è una stringa vuota, ma impostare il relativo Capacity e MaxCapacity i valori in modo diverso. I rimanenti tre costruttori definiscono un StringBuilder oggetto che ha un valore di stringa specifica e capacità. Due dei tre costruttori utilizzano la capacità massima predefinita di Int32.MaxValue, mentre il terzo consente di impostare la capacità massima.

Costruttore

Valore stringa

Capacità

Capacità massima

StringBuilder()

String.Empty

16

Int32.MaxValue

StringBuilder(Int32)

String.Empty

Definita per il capacity parametro

Int32.MaxValue

StringBuilder(Int32, Int32)

String.Empty

Definita per il capacity parametro

Definita per il maxCapacity parametro

StringBuilder(String)

Definita per il value parametro

16 o value. Length, a seconda del valore è maggiore di

Int32.MaxValue

StringBuilder(String, Int32)

Definita per il value parametro

Definita per il capacity parametro o value. Length, a seconda del valore è maggiore.

Int32.MaxValue

StringBuilder(String, Int32, Int32, Int32)

Definito da value. Substring(startIndex, length)

Definita per il capacity parametro o value. Length, a seconda del valore è maggiore.

Definita per il maxCapacity parametro

Nell'esempio seguente vengono utilizzati tre di questi overload del costruttore per creare un'istanza StringBuilder oggetti.

using System;
using System.Text;

public class Example
{
   public static void Main()
   {
      string value = "An ordinary string";
      int index = value.IndexOf("An ") + 3;
      int capacity = 0xFFFF;

      // Instantiate a StringBuilder from a string.
      StringBuilder sb1 = new StringBuilder(value);
      ShowSBInfo(sb1); 

      // Instantiate a StringBuilder from string and define a capacity.  
      StringBuilder sb2 = new StringBuilder(value, capacity);   
      ShowSBInfo(sb2); 

      // Instantiate a StringBuilder from substring and define a capacity.  
      StringBuilder sb3 = new StringBuilder(value, index, 
                                            value.Length - index, 
                                            capacity );
      ShowSBInfo(sb3); 
   }

   public static void ShowSBInfo(StringBuilder sb)
   {
      Console.WriteLine("\nValue: {0}", sb.ToString());
      foreach (var prop in sb.GetType().GetProperties()) {
         if (prop.GetIndexParameters().Length == 0)
            Console.Write("{0}: {1:N0}    ", prop.Name, prop.GetValue(sb));
      }
      Console.WriteLine();
   }
}
// The example displays the following output:
//    Value: An ordinary string
//    Capacity: 18    MaxCapacity: 2,147,483,647    Length: 18
//    
//    Value: An ordinary string
//    Capacity: 65,535    MaxCapacity: 2,147,483,647    Length: 18
//    
//    Value: ordinary string
//    Capacity: 65,535    MaxCapacity: 2,147,483,647    Length: 15

La maggior parte dei metodi che modificano la stringa in un StringBuilder istanza restituire un riferimento alla stessa istanza. Ciò consente di chiamare StringBuilder metodi in due modi:

  • È possibile effettuare chiamate al metodo singoli e ignorare il valore restituito, come avviene nell'esempio seguente.

    using System;
    using System.Text;
    
    public class Example
    {
       public static void Main()
       {
          StringBuilder sb = new StringBuilder();
          sb.Append("This is the beginning of a sentence, ");
          sb.Replace("the beginning of ", "");
          sb.Insert(sb.ToString().IndexOf("a ") + 2, "complete ");
          sb.Replace(",", ".");
          Console.WriteLine(sb.ToString());
       }
    }
    // The example displays the following output:
    //        This is a complete sentence.
    
  • È possibile apportare una serie di chiamate al metodo in un'unica istruzione. Ciò può risultare utile se si desidera scrivere una singola istruzione che raccoglie operazioni successive. Nell'esempio seguente consente di consolidare tre chiamate al metodo dell'esempio precedente in una singola riga di codice.

    using System;
    using System.Text;
    
    public class Example
    {
       public static void Main()
       {
          StringBuilder sb = new StringBuilder("This is the beginning of a sentence, ");
          sb.Replace("the beginning of ", "").Insert(sb.ToString().IndexOf("a ") + 2, 
                                                     "complete ").Replace(",", ".");
          Console.WriteLine(sb.ToString());
       }
    }
    // The example displays the following output:
    //        This is a complete sentence.
    

È possibile utilizzare i metodi della StringBuilder classe per eseguire l'iterazione, aggiungere, eliminare o modificare i caratteri in un StringBuilder oggetto.

È possibile accedere ai caratteri in un StringBuilder oggetto utilizzando il StringBuilder.Chars proprietà. In c#, Chars è un indicizzatore; in Visual Basic la proprietà predefinita è la StringBuilder classe. Ciò consente di impostare o recuperare i singoli caratteri utilizzando solo il relativo indice senza fare riferimento in modo esplicito il Chars proprietà. I caratteri in un StringBuilder oggetto iniziare in corrispondenza dell'indice 0 (zero) e continuare a indice Length - 1.

Nell'esempio seguente viene illustrata la Chars proprietà. Aggiunge 10 numeri casuali a una StringBuilder dell'oggetto e quindi scorre ogni carattere. Se la categoria del carattere Unicode è UnicodeCategory.DecimalDigitNumber, riduce il numero da 1 (o modifica il numero a 9, se il valore è 0). Nell'esempio viene visualizzato il contenuto di StringBuilder oggetto entrambi prima e dopo che sono stati modificati i valori dei singoli caratteri.

using System;
using System.Globalization;
using System.Text;

public class Example
{
   public static void Main()
   {
      Random rnd = new Random();
      StringBuilder sb = new StringBuilder();

      // Generate 10 random numbers and store them in a StringBuilder.
      for (int ctr = 0; ctr <= 9; ctr++)
         sb.Append(rnd.Next().ToString("N5"));    

      Console.WriteLine("The original string:");
      Console.WriteLine(sb.ToString());

      // Decrease each number by one.
      for (int ctr = 0; ctr < sb.Length; ctr++) {
         if (Char.GetUnicodeCategory(sb[ctr]) == UnicodeCategory.DecimalDigitNumber) {
            int number = (int) Char.GetNumericValue(sb[ctr]);
            number--;
            if (number < 0) number = 9;

            sb[ctr] = number.ToString()[0];
         }
      }
      Console.WriteLine("\nThe new string:");
      Console.WriteLine(sb.ToString());
   }
}
// The example displays the following output:
//    The original string:
//    1,457,531,530.00000940,522,609.000001,668,113,564.000001,998,992,883.000001,792,660,834.00
//    000101,203,251.000002,051,183,075.000002,066,000,067.000001,643,701,043.000001,702,382,508
//    .00000
//    
//    The new string:
//    0,346,420,429.99999839,411,598.999990,557,002,453.999990,887,881,772.999990,681,559,723.99
//    999090,192,140.999991,940,072,964.999991,955,999,956.999990,532,690,932.999990,691,271,497
//    .99999

La StringBuilder classe include i seguenti metodi per espandere il contenuto di un StringBuilder oggetto:

  • Il Append metodo aggiunge una stringa, una sottostringa, una matrice di caratteri, una parte di una matrice di caratteri, un singolo carattere è ripetuto più volte, o tipo di rappresentazione di stringa di dati primitivo un StringBuilder oggetto.

  • Il AppendLine metodo aggiunge un terminatore di riga o una stringa con un terminatore di riga in un StringBuilder oggetto.

  • Il AppendFormat metodo aggiunge un per un StringBuilder oggetto. Le rappresentazioni di stringa di oggetti inclusi nella stringa di risultato possono riflettere le convenzioni di formattazione della lingua corrente del sistema o impostazioni cultura specificate.

  • Il Insert metodo inserisce una stringa, una sottostringa, ripetizioni più di una stringa, una matrice di caratteri, una parte di una matrice di caratteri o la rappresentazione di stringa di dati primitivo e il tipo in una posizione specificata nel StringBuilder oggetto. La posizione viene definita da un indice in base zero.

Nell'esempio seguente viene utilizzata la Append, AppendLine, AppendFormat, e Insert metodi per espandere il testo di un StringBuilder oggetto.

using System;
using System.Text;

public class Example
{
   public static void Main()
   {
      // Create a StringBuilder object with no text.
      StringBuilder sb = new StringBuilder();
      // Append some text.
      sb.Append('*', 10).Append(" Adding Text to a StringBuilder Object ").Append('*', 10);
      sb.AppendLine("\n");
      sb.AppendLine("Some code points and their corresponding characters:");
      // Append some formatted text.
      for (int ctr = 50; ctr <= 60; ctr++) {
         sb.AppendFormat("{0,12:X4} {1,12}", ctr, Convert.ToChar(ctr));
         sb.AppendLine();
      }
      // Find the end of the introduction to the column.
      int pos = sb.ToString().IndexOf("characters:") + 11 + 
                Environment.NewLine.Length;
      // Insert a column header.
      sb.Insert(pos, String.Format("{2}{0,12:X4} {1,12}{2}", "Code Unit", 
                                   "Character", "\n"));      

      // Convert the StringBuilder to a string and display it.      
      Console.WriteLine(sb.ToString());      
   }
}
// The example displays the following output:
//    ********** Adding Text to a StringBuilder Object **********
//    
//    Some code points and their corresponding characters:
//    
//       Code Unit    Character
//            0032            2
//            0033            3
//            0034            4
//            0035            5
//            0036            6
//            0037            7
//            0038            8
//            0039            9
//            003A            :
//            003B            ;
//            003C            <

La StringBuilder classe include metodi che possono ridurre le dimensioni dell'oggetto corrente StringBuilder istanza. Il Clear metodo rimuove tutti i caratteri e imposta la Length proprietà su zero. Il Remove metodo consente di eliminare un numero specificato di caratteri a partire da una posizione di indice specifico. Inoltre, è possibile rimuovere i caratteri dalla fine di un StringBuilder oggetto impostando il relativo Length un valore che è minore della lunghezza dell'istanza corrente della proprietà.

Nell'esempio seguente consente di rimuovere parte del testo da un StringBuilder oggetto, vengono visualizzate le capacità risultante, la capacità massima e valori di proprietà di lunghezza e quindi chiama il Clear per rimuovere tutti i caratteri compresi tra il StringBuilder oggetto.

using System;
using System.Text;

public class Example
{
   public static void Main()
   {
      StringBuilder sb = new StringBuilder("A StringBuilder object");
      ShowSBInfo(sb);
      // Remove "object" from the text.
      string textToRemove = "object";
      int pos = sb.ToString().IndexOf(textToRemove);
      if (pos >= 0) {
         sb.Remove(pos, textToRemove.Length);
         ShowSBInfo(sb);
      }
      // Clear the StringBuilder contents.
      sb.Clear();
      ShowSBInfo(sb);   
   }

   public static void ShowSBInfo(StringBuilder sb)
   {
      Console.WriteLine("\nValue: {0}", sb.ToString());
      foreach (var prop in sb.GetType().GetProperties()) {
         if (prop.GetIndexParameters().Length == 0)
            Console.Write("{0}: {1:N0}    ", prop.Name, prop.GetValue(sb));
      }
      Console.WriteLine();
   }
}
// The example displays the following output:
//    Value: A StringBuilder object
//    Capacity: 22    MaxCapacity: 2,147,483,647    Length: 22
//    
//    Value: A StringBuilder
//    Capacity: 22    MaxCapacity: 2,147,483,647    Length: 16
//    
//    Value:
//    Capacity: 22    MaxCapacity: 2,147,483,647    Length: 0

Il StringBuilder.Replace metodo sostituisce tutte le occorrenze di un carattere o una stringa dell'intero StringBuilder oggetto o in un intervallo di caratteri specifico. Nell'esempio seguente viene utilizzato il Replace per sostituire tutti i punti esclamativi (!) con il punto interrogativo (?) nel metodo di StringBuilder oggetto.

using System;
using System.Text;

public class Example
{
   public static void Main()
   {
      StringBuilder MyStringBuilder = new StringBuilder("Hello World!");
      MyStringBuilder.Replace('!', '?');
      Console.WriteLine(MyStringBuilder);
   }
}
// The example displays the following output:
//       Hello World?

Il StringBuilder non include metodi simili per il String.Contains, String.IndexOf, e String.StartsWith metodi forniti dalla String classe, che consentono di ricercare l'oggetto per un determinato carattere o una sottostringa. Determinare la presenza o l'avvio di posizione del carattere di una sottostringa è necessario cercare un String valore utilizzando un metodo di ricerca stringa o un metodo di espressione regolare. Sono disponibili quattro modi per implementare tali ricerche, come illustrato nella tabella seguente.

Tecnica

Professionisti

Svantaggi

La ricerca di valori di stringa prima di aggiungerli a di StringBuilder oggetto.

Utile per determinare se esiste una sottostringa.

Non può essere utilizzato quando la posizione di indice di una sottostringa è importante.

Chiamare ToString e cercare l'oggetto restituito String oggetto.

Facile da utilizzare se si assegna a tutto il testo un StringBuilder dell'oggetto e quindi iniziare a modificarlo.

Complesso da chiamare ripetutamente ToString se è necessario apportare modifiche prima di tutto il testo viene aggiunto per il StringBuilder oggetto.

È necessario ricordarsi di lavoro dalla fine del StringBuilder testo dell'oggetto se si desidera apportare modifiche.

Utilizzare la Chars proprietà per la ricerca in sequenza di un intervallo di caratteri.

È utile se si è preoccupati con singoli caratteri o una sottostringa di piccole dimensioni.

Complesso se il numero di caratteri da cercare è elevato o se la logica di ricerca è complessa.

Convertire il StringBuilder dell'oggetto a un String dell'oggetto e apportare modifiche nel String oggetto.

È utile se il numero di modifiche è ridotto.

Nega il miglioramento delle prestazioni della StringBuilder classe se il numero di modifiche è di grandi dimensioni.

Esaminiamo queste tecniche in maggiore dettaglio.

  • Se l'obiettivo della ricerca per determinare l'esistenza di una particolare sottostringa (vale a dire, se non si intende la posizione della sottostringa), è possibile cercare stringhe prima di archiviarli nel StringBuilder oggetto. Nell'esempio seguente viene illustrata una possibile implementazione. Definisce un StringBuilderFinder classe il cui costruttore viene passato un riferimento a un StringBuilder oggetto e la sottostringa da trovare nella stringa. In questo caso, l'esempio si tenta di determinare se registrate le temperature in gradi Fahrenheit o Celsius e aggiunge il testo introduttivo appropriato all'inizio di StringBuilder oggetto. Un generatore di numeri casuali viene utilizzato per selezionare una matrice che contiene i dati in gradi Celsius o gradi Fahrenheit.

    using System;
    using System.Text;
    
    public class Example
    {
       public static void Main()
       {
          Random rnd = new Random();
          string[] tempF = { "47.6F", "51.3F", "49.5F", "62.3F" };
          string[] tempC = { "21.2C", "16.1C", "23.5C", "22.9C" };
          string[][] temps = { tempF, tempC }; 
    
          StringBuilder sb = new StringBuilder();
          var f = new StringBuilderFinder(sb, "F");
          var baseDate = new DateTime(2013, 5, 1); 
          String[] temperatures = temps[rnd.Next(2)];
          bool isFahrenheit = false;
          foreach (var temperature in temperatures) {
             if (isFahrenheit)
                sb.AppendFormat("{0:d}: {1}\n", baseDate, temperature);
             else
                isFahrenheit = f.SearchAndAppend(String.Format("{0:d}: {1}\n", 
                                                 baseDate, temperature));
             baseDate = baseDate.AddDays(1);
          }            
          if (isFahrenheit) {
             sb.Insert(0, "Average Daily Temperature in Degrees Fahrenheit");
             sb.Insert(47, "\n\n");
          }
          else {
             sb.Insert(0, "Average Daily Temperature in Degrees Celsius");
             sb.Insert(44, "\n\n");
          }   
          Console.WriteLine(sb.ToString());
       }
    }
    
    public class StringBuilderFinder
    {
       private StringBuilder sb;
       private String text;
    
       public StringBuilderFinder(StringBuilder sb, String textToFind)
       {
          this.sb = sb;
          this.text = textToFind;
       }
    
       public bool SearchAndAppend(String stringToSearch)
       {
          sb.Append(stringToSearch);
          return stringToSearch.Contains(text);
       }
    }
    // The example displays output similar to the following:
    //    Average Daily Temperature in Degrees Celsius
    //    
    //    5/1/2013: 21.2C
    //    5/2/2013: 16.1C
    //    5/3/2013: 23.5C
    //    5/4/2013: 22.9C
    
  • Chiamare il StringBuilder.ToString per convertire il StringBuilder dell'oggetto a un String oggetto. È possibile cercare la stringa tramite metodi, ad esempio String.LastIndexOf o String.StartsWith, oppure è possibile utilizzare espressioni regolari e Regex per cercare modelli di classe. Poiché entrambi StringBuilder e String gli oggetti utilizzano per archiviare i caratteri, la posizione dell'indice di caratteri, sottostringhe, la codifica UTF-16 e corrispondenze di espressioni regolari sono gli stessi in entrambi gli oggetti. In questo modo è possibile utilizzare StringBuilder metodi per apportare modifiche nella stessa posizione in cui tale testo viene trovato nel String oggetto.

    System_CAPS_noteNota

    Se si adotta questo approccio, è opportuno rivolgersi alla fine di StringBuilder oggetto sua introduzione in modo che non è necessario convertire ripetutamente il StringBuilder oggetto in una stringa.

    Questo approccio viene illustrato nell'esempio seguente: Archivia le occorrenze di ogni lettera dell'alfabeto inglese in un StringBuilder oggetto. Converte quindi il testo da un String dell'oggetto e viene utilizzata un'espressione regolare per identificare la posizione iniziale di ogni sequenza di quattro caratteri. Infine, aggiunge un carattere di sottolineatura prima di ogni sequenza di quattro caratteri, ad eccezione della prima sequenza e converte il primo carattere della sequenza di lettere maiuscole.

    using System;
    using System.Text;
    using System.Text.RegularExpressions;
    
    public class Example
    {
       public static void Main()
       {
          // Create a StringBuilder object with 4 successive occurrences 
          // of each character in the English alphabet. 
          StringBuilder sb = new StringBuilder();
          for (ushort ctr = (ushort)'a'; ctr <= (ushort) 'z'; ctr++)
             sb.Append(Convert.ToChar(ctr), 4);
    
          // Create a parallel string object.
          String sbString = sb.ToString();
          // Determine where each new character sequence begins.
          String pattern = @"(\w)\1+";
          MatchCollection matches = Regex.Matches(sbString, pattern);
    
          // Uppercase the first occurrence of the sequence, and separate it
          // from the previous sequence by an underscore character.
          for (int ctr = matches.Count - 1; ctr >= 0; ctr--) { 
             Match m = matches[ctr];
             sb[m.Index] = Char.ToUpper(sb[m.Index]);
             if (m.Index > 0) sb.Insert(m.Index, "_");
          }
          // Display the resulting string.
          sbString = sb.ToString();
          int line = 0;
          do {
             int nChars = line * 80 + 79 <= sbString.Length ? 
                                 80 : sbString.Length - line * 80;
             Console.WriteLine(sbString.Substring(line * 80, nChars));
             line++;
          } while (line * 80 < sbString.Length);
       }
    }
    // The example displays the following output:
    //    Aaaa_Bbbb_Cccc_Dddd_Eeee_Ffff_Gggg_Hhhh_Iiii_Jjjj_Kkkk_Llll_Mmmm_Nnnn_Oooo_Pppp_
    //    Qqqq_Rrrr_Ssss_Tttt_Uuuu_Vvvv_Wwww_Xxxx_Yyyy_Zzzz
    
  • Utilizzare la StringBuilder.Chars proprietà per la ricerca in sequenza di un intervallo di caratteri in un StringBuilder oggetto. Questo approccio potrebbe non essere pratico se il numero di caratteri da cercare è di grandi dimensioni o la logica di ricerca è particolarmente complessa.

    Nell'esempio seguente è identico in termini di funzionalità all'esempio precedente, ma differisce nell'implementazione. Usa il Chars proprietà per rilevare quando viene modificato un valore di carattere, inserisce un carattere di sottolineatura in tale posizione e converte il primo carattere nella nuova sequenza di lettere maiuscole.

    using System;
    using System.Text;
    
    public class Example
    {
       public static void Main()
       {
          // Create a StringBuilder object with 4 successive occurrences 
          // of each character in the English alphabet. 
          StringBuilder sb = new StringBuilder();
          for (ushort ctr = (ushort) 'a'; ctr <= (ushort) 'z'; ctr++)
             sb.Append(Convert.ToChar(ctr), 4);
    
          // Iterate the text to determine when a new character sequence occurs.
          int position = 0;
          Char current = '\u0000';
          do {
             if (sb[position] != current) {
                current = sb[position];
                sb[position] = Char.ToUpper(sb[position]);
                if (position > 0) 
                   sb.Insert(position, "_");
                position += 2;
             }
             else {
                position++;
             }      
          } while (position <= sb.Length - 1);
          // Display the resulting string.
          String sbString = sb.ToString();
          int line = 0;
          do {
             int nChars = line * 80 + 79 <= sbString.Length ? 
                                 80 : sbString.Length - line * 80;
             Console.WriteLine(sbString.Substring(line * 80, nChars));
             line++;
          } while (line * 80 < sbString.Length);
       }
    }
    // The example displays the following output:
    //    Aaaa_Bbbb_Cccc_Dddd_Eeee_Ffff_Gggg_Hhhh_Iiii_Jjjj_Kkkk_Llll_Mmmm_Nnnn_Oooo_Pppp_
    //    Qqqq_Rrrr_Ssss_Tttt_Uuuu_Vvvv_Wwww_Xxxx_Yyyy_Zzzz
    
  • Archiviare tutto il testo non modificato nel StringBuilder dell'oggetto, chiamare il StringBuilder.ToString per convertire il StringBuilder dell'oggetto a un String dell'oggetto e apportare le modifiche nel String oggetto. È possibile utilizzare questo approccio se si dispone solo di alcune modifiche; in caso contrario, il costo dell'utilizzo delle stringhe non modificabile può annullare i vantaggi di prestazioni di un StringBuilder oggetto.

    Nell'esempio seguente è identico in termini di funzionalità per i due esempi precedenti, ma differisce nell'implementazione. Crea un StringBuilder dell'oggetto, viene convertito in un String dell'oggetto e quindi utilizza un'espressione regolare per eseguire tutte le modifiche rimanenti nella stringa. Il Regex.Replace(String, String, MatchEvaluator) metodo utilizza un'espressione lambda per eseguire la sostituzione in ogni corrispondenza.

    using System;
    using System.Text;
    using System.Text.RegularExpressions;
    
    public class Example
    {
       public static void Main()
       {
          // Create a StringBuilder object with 4 successive occurrences 
          // of each character in the English alphabet. 
          StringBuilder sb = new StringBuilder();
          for (ushort ctr = (ushort)'a'; ctr <= (ushort) 'z'; ctr++)
             sb.Append(Convert.ToChar(ctr), 4);
    
          // Convert it to a string.
          String sbString = sb.ToString();
    
          // Use a regex to uppercase the first occurrence of the sequence, 
          // and separate it from the previous sequence by an underscore.
          string pattern = @"(\w)(\1+)";
          sbString = Regex.Replace(sbString, pattern, 
                                   m => (m.Index > 0 ? "_" : "") + 
                                   m.Groups[1].Value.ToUpper() + 
                                   m.Groups[2].Value);
    
          // Display the resulting string.
          int line = 0;
          do {
             int nChars = line * 80 + 79 <= sbString.Length ? 
                                 80 : sbString.Length - line * 80;
             Console.WriteLine(sbString.Substring(line * 80, nChars));
             line++;
          } while (line * 80 < sbString.Length);
       }
    }
    // The example displays the following output:
    //    Aaaa_Bbbb_Cccc_Dddd_Eeee_Ffff_Gggg_Hhhh_Iiii_Jjjj_Kkkk_Llll_Mmmm_Nnnn_Oooo_Pppp_
    //    Qqqq_Rrrr_Ssss_Tttt_Uuuu_Vvvv_Wwww_Xxxx_Yyyy_Zzzz
    

È necessario convertire il StringBuilder dell'oggetto a un String dell'oggetto prima di poter passare la stringa rappresentata dal StringBuilder oggetto a un metodo che dispone di un String parametro o per visualizzarlo nell'interfaccia utente. Si esegue questa conversione chiamando il StringBuilder.ToString metodo. Per ulteriori informazioni, vedere l'esempio precedente, che chiama il ToString per convertire un StringBuilder dell'oggetto in una stringa in modo che possa essere passata a un metodo di espressione regolare.

Note per i chiamanti:

Nel.NET Framework 4 e .NET Framework 4.5, quando si crea un'istanza di StringBuilder oggetto chiamando il StringBuilder(Int32, Int32) costruttore, sia la lunghezza e la capacità del StringBuilder istanza può crescere oltre il valore di relativo MaxCapacity proprietà. Questa situazione può verificarsi in particolare quando si chiama il Append e AppendFormat metodi per aggiungere stringhe di piccole dimensioni.

Nell'esempio seguente viene illustrato come chiamare molti dei metodi definiti per la StringBuilder classe.

using System;
using System.Text;

public sealed class App 
{
    static void Main() 
    {
        // Create a StringBuilder that expects to hold 50 characters.
        // Initialize the StringBuilder with "ABC".
        StringBuilder sb = new StringBuilder("ABC", 50);

        // Append three characters (D, E, and F) to the end of the StringBuilder.
        sb.Append(new char[] { 'D', 'E', 'F' });

        // Append a format string to the end of the StringBuilder.
        sb.AppendFormat("GHI{0}{1}", 'J', 'k');

        // Display the number of characters in the StringBuilder and its string.
        Console.WriteLine("{0} chars: {1}", sb.Length, sb.ToString());

        // Insert a string at the beginning of the StringBuilder.
        sb.Insert(0, "Alphabet: ");

        // Replace all lowercase k's with uppercase K's.
        sb.Replace('k', 'K');

        // Display the number of characters in the StringBuilder and its string.
        Console.WriteLine("{0} chars: {1}", sb.Length, sb.ToString());
    }
}

// This code produces the following output.
//
// 11 chars: ABCDEFGHIJk
// 21 chars: Alphabet: ABCDEFGHIJK

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 1.1
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1

I membri statici pubblici ( Condiviso in Visual Basic) di questo tipo è thread safe. Non tutti i membri di istanza sono garantiti come thread safe.

Torna all'inizio
Mostra: