StringBuilder.GetChunks Metoda

Definicja

Zwraca obiekt, który może służyć do iterować po fragmentach znaków reprezentowanych w obiekcie ReadOnlyMemory<Char> utworzonym na podstawie tego StringBuilder wystąpienia.

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

Zwraca

StringBuilder.ChunkEnumerator

Moduł wyliczający dla fragmentów w ReadOnlyMemory<Char> .

Uwagi

Możesz iterować fragmenty z zakresu pamięci przy użyciu kodu podobnego do następującego:

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

Celem tej metody jest efektywne wyodrębnianie danych stałej StringBuilder . Jeśli fragment StringBuilder jest modyfikowany, gdy wyliczenie fragmentu jest niekompletne, wynik jest niezdefiniowany. StringBuilder Nie jest również bezpieczny wątkowo, więc operacje na nim z współbieżnych wątków są niedozwolone.

Zwrócone fragmenty nie mają gwarancji, że w przypadku zmodyfikowania fragmentu pozostaną niezmienione, dlatego nie należy buforować ReadOnlyMemory<T> StringBuilder ich do późniejszego użycia.

Tworzenie na pomocą metody (tak jak w poprzednim przykładzie) jest kosztowne, więc utwórz zmienną lokalną dla zakresu, jeśli musisz użyć jej w ReadOnlySpan<T> ReadOnlyMemory<T> ReadOnlyMemory<T>.Span zagnieżdżonych for instrukcjach. Na przykład:

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

Dotyczy