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] */
}
}