Прочитать на английском

Поделиться через


StringBuilder.GetChunks Метод

Определение

Возвращает объект, который можно использовать для итерации с помощью блоков символов, представленных в ReadOnlyMemory<Char> созданном из этого экземпляра StringBuilder.

public System.Text.StringBuilder.ChunkEnumerator GetChunks();

Возвращаемое значение

Перечислитель для блоков в 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] */
    }
}

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

Продукт Версии
.NET Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10