StringBuilder.GetChunks Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает объект, который можно использовать для итерации с помощью блоков символов, представленных в ReadOnlyMemory<Char>
созданном из этого экземпляра 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
Возвращаемое значение
Перечислитель для блоков в 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] */
}
}