StringBuilder.GetChunks Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Retorna um objeto que pode ser usado para iterar nas partes de caracteres representadas em um ReadOnlyMemory<Char>
criado usando essa instância de 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 do ReadOnlyMemory<Char>
.
Comentários
Você pode iterar as partes no intervalo de memória com um 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 uma constante StringBuilder . Se o StringBuilder for modificado enquanto a enumeração de partes estiver incompleta, o resultado será indefinido. StringBuilder também não é thread-safe, portanto, operar nele com threads simultâneos é ilegal.
Não há garantia de que as partes retornadas permanecerão inalteradas se o for modificado, portanto, não as ReadOnlyMemory<T> StringBuilder armazenará em cache para uso posterior.
Criar um de um (como o método faz no exemplo anterior) é caro, portanto, crie uma variável local para o intervalo se você precisar usá-lo em uma ReadOnlySpan<T> ReadOnlyMemory<T> ReadOnlyMemory<T>.Span 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] */
}
}