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

返回

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

适用于