StringBuilder.GetChunks 메서드

정의

ReadOnlyMemory<Char> 인스턴스에서 작성한 StringBuilder에 표시되는 문자 청크를 반복하기 위해 사용할 수 있는 개체를 반환합니다.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. 청크 열거가 완전 하지 않은 상태에서 StringBuilder 수정 되는 경우 결과는 정의 되지 않습니다.If 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.

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

이전 예제에서 ReadOnlyMemory<T>.Span 메서드를 사용 하 여 ReadOnlyMemory<T>에서 ReadOnlySpan<T>를 만들면 비용이 많이 들기 때문에 중첩 된 for 문에서 사용 해야 하는 경우 범위에 대 한 지역 변수를 만듭니다.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] */
    }
}

적용 대상