StringBuilder.GetChunks Yöntem

Tanım

Bu StringBuilder örnekten oluşturulan bir içinde temsil edilen karakter öbekleri arasında yineleme yapmak için kullanılabilecek bir ReadOnlyMemory<Char> nesne döndürür.

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

içindeki ReadOnlyMemory<Char>öbekler için bir numaralandırıcı.

Açıklamalar

Bellek aralığındaki öbekleri aşağıdaki gibi bir kodla yineleyebilirsiniz:

foreach (ReadOnlyMemory<char> chunk in sb.GetChunks())
    foreach(char ch in chunk.Span)
        { /* operations on ch */ }

Bu yöntemin amacı , bir sabitinStringBuilder verilerini verimli bir şekilde ayıklamaktır. StringBuilder öbek numaralandırması eksikken değiştirilirse sonuç tanımlanmamış olur. StringBuilder aynı zamanda iş parçacığı güvenli değildir, bu nedenle eş zamanlı iş parçacıklarıyla üzerinde çalışma geçersizdir.

ReadOnlyMemory<T> döndürülen öbeklerin değiştirildiğinde değiştirilmemesi StringBuilder garanti edilemez, bu nedenle bunları daha sonra kullanmak üzere önbelleğe alma.

ReadOnlySpan<T> bir 'den ReadOnlyMemory<T> oluşturma (önceki örnekte olduğu gibiReadOnlyMemory<T>.Span) pahalıdır, bu nedenle iç içe for geçmiş bir deyimde kullanmanız gerekiyorsa span için yerel bir değişken oluşturun. Örneğin:

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