Partager via


StringBuilder.GetChunks Méthode

Définition

Retourne un objet qui peut être utilisé pour itérer au sein des blocs de caractères représentés dans un ReadOnlyMemory<Char> créé à partir de cette instance 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

Retours

Énumérateur pour les blocs dans la ReadOnlyMemory<Char>.

Remarques

Vous pouvez itérer les blocs de la plage de mémoire avec du code comme suit :

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

L’objectif de cette méthode est d’extraire efficacement les données d’une constante constanteStringBuilder. Si le StringBuilder est modifié pendant que l’énumération de segments est incomplète, le résultat n’est pas défini. StringBuilder n’est pas non plus thread-safe. Par conséquent, le fonctionnement avec des threads simultanés est illégal.

Les ReadOnlyMemory<T> blocs retournés ne sont pas garantis de rester inchangés si le StringBuilder est modifié, ne les mettez pas en cache pour une utilisation ultérieure.

La création d’un ReadOnlySpan<T> à partir d’un ReadOnlyMemory<T> (comme la méthode ReadOnlyMemory<T>.Span dans l’exemple précédent) est coûteuse. Créez donc une variable locale pour l’étendue si vous devez l’utiliser dans une instruction for imbriquée. Par exemple:

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

S’applique à