StringBuilder.GetChunks StringBuilder.GetChunks StringBuilder.GetChunks StringBuilder.GetChunks Method

정의

StringBuilder 인스턴스에서 작성한 ReadOnlyMemory<Char>에 표시되는 문자 청크를 반복하기 위해 사용할 수 있는 개체를 반환합니다.Returns an object that can be used to iterate through the chunks of characters represented in a ReadOnlyMemory<Char> created from this StringBuilder instance.

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>에 있는 청크의 열거자입니다.An enumerator for the chunks in the ReadOnlyMemory<Char>.

설명

다음과 같은 코드를 사용 하 여 메모리 범위의 청크를 반복할 수 있습니다.You can iterate the chunks in the memory range with code like the following:

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

이 메서드의 목적은 상수 StringBuilder데이터를 효율적으로 추출 하는 것입니다.The purpose of this method is to efficiently extract the data of a constant StringBuilder. 청크 열거가 불완전 한 상태에서 이수정되면결과가정의되지않습니다.StringBuilderIf the StringBuilder is modified while the chunk enumeration is incomplete, the result is undefined. StringBuilder또한는 스레드로부터 안전 하지 않으므로 동시 스레드를 사용 하 여 작업을 실행 하는 것은 잘못 된 것입니다.StringBuilder is also not thread-safe, so operating on it with concurrent threads is illegal.

StringBuilderReadOnlyMemory<T> 수정 된 경우 반환 되는 청크는 변경 되지 않은 상태로 유지 되므로 나중에 사용할 수 있도록 캐시 하지 않습니다.The ReadOnlyMemory<T> chunks returned are not guaranteed to remain unchanged if the StringBuilder is modified, so do not cache them for later use.

이전 예제에서 for 메서드를 사용 하 여를 만들면 비용이 많이 들기 때문에 중첩 된 문에서 사용 해야 하는 경우 범위에 대 한 지역 변수를 만듭니다. ReadOnlyMemory<T>.Span ReadOnlySpan<T> ReadOnlyMemory<T>Creating a ReadOnlySpan<T> from a ReadOnlyMemory<T> (as the ReadOnlyMemory<T>.Span method does in the previous example, is expensive, so create a local variable for the span if you need to use it in a nested for statement. 예:For example:

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

적용 대상