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