次の方法で共有


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

戻り値

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

注釈

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

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

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

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

ReadOnlyMemory<T> から ReadOnlySpan<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] */
    }
}

適用対象