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>-Methode dargestellt werden, die aus dieser StringBuilder-Instanz erstellt wurde.

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

StringBuilder.ChunkEnumerator

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

Hinweise

Sie können die Block im Speicherbereich mit Code wie dem folgenden iterieren:

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

Der Zweck dieser Methode besteht im effizienten Extrahieren der Daten einer konstanten StringBuilder . Wenn geändert StringBuilder wird, während die Blockenumeration unvollständig ist, ist das Ergebnis nicht definiert. StringBuilder ist auch nicht threadsicher, sodass die Ausführung mit gleichzeitigen Threads unzulässig ist.

Es ist nicht garantiert, dass die zurückgegebenen Blocke unverändert bleiben, wenn geändert wird. Daher sollten Sie sie nicht zur ReadOnlyMemory<T> StringBuilder späteren Verwendung zwischenspeichern.

Das Erstellen eines aus einem (wie die -Methode im vorherigen Beispiel) ist teuer. Erstellen Sie daher eine lokale Variable für die Spanne, wenn Sie sie in einer geschachtelten ReadOnlySpan<T> ReadOnlyMemory<T> Anweisung verwenden ReadOnlyMemory<T>.Span for müssen. 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