StringBuilder.GetChunks Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Bu örnekten oluşturulmuş bir içinde temsil edilen karakterlerin öbeklerini yinelemek için kullanılabilecek bir nesne döndürür 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
Döndürülenler
İçindeki parçalar için bir Numaralandırıcı ReadOnlyMemory<Char>
.
Açıklamalar
Bellek aralığındaki öbekleri aşağıdakiler gibi kodla yineleyebilirsiniz:
foreach (ReadOnlyMemory<char> chunk in sb.GetChunks())
foreach(char ch in chunk.Span)
{ /* operations on ch */ }
Bu yöntemin amacı, bir sabitin verisini etkin bir şekilde ayıklamaya yönelik bir yöntemdir StringBuilder . StringBuilderÖbek numaralandırması eksik iken değiştirilirse, sonuç tanımsızdır. StringBuilder aynı zamanda iş parçacığı açısından güvenli değildir, bu nedenle eşzamanlı iş parçacıklarıyla birlikte çalıştırmak geçersizdir.
ReadOnlyMemory<T>Döndürülen öbeklerin değiştirilme olmaması garanti edilmez, bu StringBuilder nedenle daha sonra kullanmak üzere bunları önbelleğe mayın.
ReadOnlySpan<T>Bir kaynağından oluşturma ReadOnlyMemory<T> ( ReadOnlyMemory<T>.Span Önceki örnekte olduğu gibi) pahalıdır, bu nedenle, iç içe geçmiş bir bildirimde kullanmanız gerekiyorsa, yayılma için yerel bir değişken oluşturun for
. Örnek:
foreach (ReadOnlyMemory<char> chunk in sb.GetChunks())
{
var span = chunk.Span;
for(int i = 0; i < span.Length; i++)
{
/* operations on span[i] */
}
}