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

Применяется к