StringBuilder.GetChunks Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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 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] */
}
}