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

StringBuilder.ChunkEnumerator

Énumérateur pour les segments de ReadOnlyMemory<Char>.

Remarques

Vous pouvez itérer les segments dans la plage de mémoire avec un code similaire à ce qui 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 StringBuilder . Si le StringBuilder est modifié alors que l’énumération de blocs est incomplète, le résultat n’est pas défini. StringBuilder n’est pas non plus thread-safe, donc son utilisation avec des threads simultanés est illégale.

Il n’est ReadOnlyMemory<T> pas garanti que les segments retournés restent inchangés si le StringBuilder est modifié, donc ne les mettez pas en cache pour une utilisation ultérieure.

La création ReadOnlySpan<T> d’un à partir d’un ReadOnlyMemory<T> (comme le ReadOnlyMemory<T>.Span fait la méthode dans l’exemple précédent) est coûteuse. par conséquent, créez une variable locale pour l’étendue si vous devez l’utiliser dans une instruction imbriquée for . 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 à