Aracılığıyla paylaş


StringBuilder.GetChunks Yöntem

Tanım

Bu StringBuilder örneğinden oluşturulan bir ReadOnlyMemory<Char> temsil edilen karakter öbekleri arasında yineleme yapmak için kullanılabilecek bir 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

ReadOnlyMemory<Char>içindeki ö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ı, sabitStringBuilderverilerini verimli bir şekilde ayıklamaktır. Öbek numaralandırması eksikken StringBuilder değiştirilirse sonuç tanımlanmamış olur. StringBuilder iş parçacığı açısından da güvenli değildir, bu nedenle eş zamanlı iş parçacıklarıyla üzerinde çalışma geçersizdir.

StringBuilder değiştirilirse döndürülen ReadOnlyMemory<T> öbeklerinin değişmeden kalacağı garanti edilemez, bu nedenle bunları daha sonra kullanmak üzere önbelleğe alma.

bir ReadOnlyMemory<T>ReadOnlySpan<T> oluşturmak (önceki örnekte ReadOnlyMemory<T>.Span yönteminde olduğu gibi) pahalıdır, bu nedenle iç içe geçmiş bir for deyiminde kullanmanız gerekiyorsa span için yerel bir değişken oluşturun. Mesela:

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