StringBuilder.GetChunks Yöntem

Tanım

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

StringBuilder.ChunkEnumerator

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

Şunlara uygulanır