StringBuilder.GetChunks 方法

定义

返回一个对象,该对象可用于循环访问在此StringBuilder实例中创建的ReadOnlyMemory<Char>字符区块。

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

返回

ReadOnlyMemory<Char>区块的枚举器。

注解

可以使用如下所示的代码循环访问内存区域中的区块:

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

此方法的目的是有效地提取 常量StringBuilder的数据。 StringBuilder如果在区块枚举不完整时修改了该结果,则结果未定义。 StringBuilder 也不是线程安全的,因此使用并发线程对其进行操作是非法的。

ReadOnlyMemory<T>如果修改了区块,则不保证返回的StringBuilder区块保持不变,因此请不要缓存它们以供以后使用。

从 创建一个 ReadOnlySpan<T>ReadOnlyMemory<T> (正如 ReadOnlyMemory<T>.Span 上一示例中的方法所做的那样)成本高昂,因此,如果需要在嵌套 for 语句中使用它,请为范围创建局部变量。 例如:

foreach (ReadOnlyMemory<char> chunk in sb.GetChunks())
{
    var span = chunk.Span;
    for(int i = 0; i < span.Length; i++)
    {
        /* operations on span[i] */
    }
}

适用于