Compartilhar via


StringBuilder.GetChunks Método

Definição

Retorna um objeto que pode ser usado para iterar por meio dos blocos de caracteres representados em um ReadOnlyMemory<Char> criado a partir desta instância 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

Retornos

Um enumerador para as partes no ReadOnlyMemory<Char>.

Comentários

Você pode iterar as partes no intervalo de memória com código como o seguinte:

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

A finalidade desse método é extrair com eficiência os dados de umaconstante . Se o StringBuilder for modificado enquanto a enumeração de parte estiver incompleta, o resultado será indefinido. StringBuilder também não é thread-safe, portanto, operar nele com threads simultâneos é ilegal.

As partes ReadOnlyMemory<T> retornadas não têm garantia de permanecer inalteradas se o StringBuilder for modificado, portanto, não os armazene em cache para uso posterior.

Criar um ReadOnlySpan<T> de um ReadOnlyMemory<T> (como o método ReadOnlyMemory<T>.Span faz no exemplo anterior) é caro, portanto, crie uma variável local para o intervalo se precisar usá-la em uma instrução for aninhada. Por exemplo:

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

Aplica-se a