Udostępnij za pośrednictwem


StringBuilder.GetChunks Metoda

Definicja

Zwraca obiekt, który może służyć do iterowania fragmentów znaków reprezentowanych w ReadOnlyMemory<Char> utworzonym na podstawie tego wystąpienia 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

Zwraca

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

Uwagi

Fragmentów w zakresie pamięci można iterować 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ębnienie danych stałej StringBuilder. Jeśli StringBuilder jest modyfikowana, gdy wyliczenie fragmentu jest niekompletne, wynik jest niezdefiniowany. StringBuilder nie jest również bezpieczny wątkowo, więc działanie na nim z równoczesnymi wątkami jest nielegalne.

Zwrócone fragmenty ReadOnlyMemory<T> nie są gwarantowane bez zmian w przypadku modyfikacji StringBuilder, więc nie buforuj ich do późniejszego użycia.

Tworzenie ReadOnlySpan<T> na podstawie ReadOnlyMemory<T> (jak metoda ReadOnlyMemory<T>.Span w poprzednim przykładzie) jest kosztowne, dlatego utwórz zmienną lokalną dla zakresu, jeśli musisz użyć jej w zagnieżdżonej instrukcji for. 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