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


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

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