Freigeben über


StringBuilder.GetChunks Methode

Definition

Gibt ein Objekt zurück, das zum Durchlaufen der Blöcke von Zeichen verwendet werden kann, die in einer ReadOnlyMemory<Char> aus dieser StringBuilder Instanz erstellt wurden.

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

Gibt zurück

Ein Enumerator für die Blöcke im ReadOnlyMemory<Char>.

Hinweise

Sie können die Blöcke im Speicherbereich mit Code wie den folgenden durchlaufen:

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

Zweck dieser Methode ist es, die Daten einer KonstantenStringBuildereffizient zu extrahieren. Wenn das StringBuilder geändert wird, während die Blockaufzählung unvollständig ist, ist das Ergebnis nicht definiert. StringBuilder ist auch nicht threadsicher, sodass das Arbeiten mit gleichzeitigen Threads unzulässig ist.

Die zurückgegebenen ReadOnlyMemory<T> Blöcke werden nicht garantiert unverändert bleiben, wenn die StringBuilder geändert wird. Speichern Sie sie daher nicht für die spätere Verwendung zwischen.

Das Erstellen einer ReadOnlySpan<T> aus einem ReadOnlyMemory<T> (wie die ReadOnlyMemory<T>.Span-Methode im vorherigen Beispiel ausgeführt wird) ist teuer. Erstellen Sie daher eine lokale Variable für die Spanne, wenn Sie sie in einer geschachtelten for-Anweisung verwenden müssen. Zum Beispiel:

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

Gilt für: