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 もスレッド セーフではないので、同時実行スレッドでの操作は不正です。
が変更された場合、返されるチャンクは変更されず、後で使用するためにキャッシュ 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] */
}
}