StringBuilder.GetChunks メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
この 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] */
}
}
適用対象
.NET