StringBuilder.GetChunks Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Restituisce un oggetto che può essere utilizzato per scorrere i blocchi di caratteri rappresentati in un ReadOnlyMemory<Char> oggetto creato da questa StringBuilder istanza.
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
Valori restituiti
Enumeratore per i blocchi in ReadOnlyMemory<Char>.
Commenti
È possibile eseguire l'iterazione dei blocchi nell'intervallo di memoria con codice simile al seguente:
foreach (ReadOnlyMemory<char> chunk in sb.GetChunks())
foreach(char ch in chunk.Span)
{ /* operations on ch */ }
Lo scopo di questo metodo è estrarre in modo efficiente i dati di una costanteStringBuilder. Se l'oggetto StringBuilder viene modificato mentre l'enumerazione del blocco è incompleta, il risultato non è definito. StringBuilder non è inoltre thread-safe, quindi operare su di esso con thread simultanei è illegale.
Non ReadOnlyMemory<T> è garantito che i blocchi restituiti rimangano invariati se l'oggetto StringBuilder viene modificato, quindi non memorizzarli nella cache per usarli in un secondo momento.
La creazione di un ReadOnlySpan<T> oggetto da ( ReadOnlyMemory<T> come nel ReadOnlyMemory<T>.Span metodo dell'esempio precedente) è costosa, quindi creare una variabile locale per l'intervallo se è necessario usarla in un'istruzione nidificata for . Per esempio:
foreach (ReadOnlyMemory<char> chunk in sb.GetChunks())
{
var span = chunk.Span;
for(int i = 0; i < span.Length; i++)
{
/* operations on span[i] */
}
}