StringBuilder.GetChunks メソッド

定義

この StringBuilder インスタンスから作成された ReadOnlyMemory<Char> で表される文字のチャンクを反復処理する目的で利用できるオブジェクトを返します。

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

戻り値

StringBuilder.ChunkEnumerator

ReadOnlyMemory<Char> のチャンクの列挙子。

注釈

次のようなコードを使用して、メモリ範囲内のチャンクを反復処理できます。

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

このメソッドの目的は、定数 のデータを効率的に抽出 することです StringBuilder 。 チャンク列挙 StringBuilder が不完全な間に が変更された場合、結果は未定義になります。 StringBuilder もスレッド セーフではないので、同時実行スレッドでの操作は不正です。

が変更された場合、返されるチャンクは変更されず、後で使用するためにキャッシュ ReadOnlyMemory<T> StringBuilder しないでください。

(前の例の メソッドと同様に) から を作成するとコストが高くなります。そのため、入れ子になったステートメントで使用する必要がある場合は、スパンのローカル変数 ReadOnlySpan<T> ReadOnlyMemory<T> ReadOnlyMemory<T>.Span を作成 for します。 次に例を示します。

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

適用対象