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

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

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

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