StringBuilder.GetChunks Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Zwraca obiekt, który może służyć do iterować po fragmentach znaków reprezentowanych w obiekcie ReadOnlyMemory<Char>
utworzonym na podstawie tego StringBuilder wystąpienia.
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
Zwraca
Moduł wyliczający dla fragmentów w ReadOnlyMemory<Char>
.
Uwagi
Możesz iterować fragmenty z zakresu pamięci przy użyciu kodu podobnego do następującego:
foreach (ReadOnlyMemory<char> chunk in sb.GetChunks())
foreach(char ch in chunk.Span)
{ /* operations on ch */ }
Celem tej metody jest efektywne wyodrębnianie danych stałej StringBuilder . Jeśli fragment StringBuilder jest modyfikowany, gdy wyliczenie fragmentu jest niekompletne, wynik jest niezdefiniowany. StringBuilder Nie jest również bezpieczny wątkowo, więc operacje na nim z współbieżnych wątków są niedozwolone.
Zwrócone fragmenty nie mają gwarancji, że w przypadku zmodyfikowania fragmentu pozostaną niezmienione, dlatego nie należy buforować ReadOnlyMemory<T> StringBuilder ich do późniejszego użycia.
Tworzenie na pomocą metody (tak jak w poprzednim przykładzie) jest kosztowne, więc utwórz zmienną lokalną dla zakresu, jeśli musisz użyć jej w ReadOnlySpan<T> ReadOnlyMemory<T> ReadOnlyMemory<T>.Span zagnieżdżonych for
instrukcjach. Na przykład:
foreach (ReadOnlyMemory<char> chunk in sb.GetChunks())
{
var span = chunk.Span;
for(int i = 0; i < span.Length; i++)
{
/* operations on span[i] */
}
}