StringBuilder.GetChunks Metodo

Definizione

Restituisce un oggetto che può essere usato per scorrere i blocchi di caratteri rappresentati in un ReadOnlyMemory<Char> creato da questa istanza di StringBuilder.

public:
 System::Text::StringBuilder::ChunkEnumerator GetChunks();
public System.Text.StringBuilder.ChunkEnumerator GetChunks ();
member this.GetChunks : unit -> System.Text.StringBuilder.ChunkEnumerator
Public Function GetChunks () As StringBuilder.ChunkEnumerator

Restituisce

StringBuilder.ChunkEnumerator

Enumeratore per i blocchi in ReadOnlyMemory<Char>.

Commenti

È possibile scorrere i blocchi nell'intervallo di memoria con codice simile al seguente:

foreach (ReadOnlyMemory<char> chunk in sb.GetChunks())
    foreach(char ch in chunk.Span)
        { /* operations on ch */ }

Lo scopo di questo metodo è estrarre in modo efficiente i dati di una costante StringBuilder . Se StringBuilder l'oggetto viene modificato mentre l'enumerazione del blocco è incompleta, il risultato non è definito. StringBuilder non è thread-safe, pertanto il funzionamento con thread simultanei non è valido.

Non è garantito che i blocchi restituiti rimangano invariati se l'oggetto viene modificato, quindi non memorizzarli ReadOnlyMemory<T> nella cache per un uso StringBuilder successivo.

La creazione di un da un oggetto (come fa il metodo nell'esempio precedente) è costosa, quindi creare una variabile locale per l'intervallo se è necessario ReadOnlySpan<T> ReadOnlyMemory<T> usarla in ReadOnlyMemory<T>.Span un'istruzione for annidata. Ad esempio:

foreach (ReadOnlyMemory<char> chunk in sb.GetChunks())
{
    var span = chunk.Span;
    for(int i = 0; i < span.Length; i++)
    {
        /* operations on span[i] */
    }
}

Si applica a