ReadOnlySpan<T>.Enumerator 구조체

정의

ReadOnlySpan<T>의 요소에 대한 열거자를 제공합니다.

public: value class ReadOnlySpan<T>::Enumerator
public ref struct ReadOnlySpan<T>.Enumerator
type ReadOnlySpan<'T>.Enumerator = struct
Public Structure ReadOnlySpan(Of T).Enumerator

형식 매개 변수

T
상속
ReadOnlySpan<T>.Enumerator

설명

C# 언어 및 For Each의 C# foreach... Visual Basic의 다음 구문은 열거자의 복잡성을 숨깁니다. 열거자를 직접 조작하는 대신 사용 foreach 하거나 For Each...Next 사용하는 것이 좋습니다.

처음에는 열거자가 .의 첫 번째 요소 앞에 배치됩니다 ReadOnlySpan<T>. 이 위치에서 Current는 정의되지 않습니다. 의 값을 Current읽기 전에 열거자를 첫 번째 항목으로 ReadOnlySpan<T> 이동하려면 호출 MoveNext 해야 합니다.

Current 는 호출될 때까지 MoveNext 동일한 값을 반환합니다. MoveNext에서 다음 항목으로 ReadOnlySpan<T>설정합니다Current.

의 끝을 ReadOnlySpan<T>MoveNext 통과하면 MoveNext .를 반환합니다false. 열거자가 이 상태에 있으면 후속 호출 MoveNext 도 반환 false 되고 Current 정의되지 않습니다. 다시 첫 번째 항목 ReadOnlySpan<T> 으로 설정할 Current 수 없습니다. 대신 새 열거자 인스턴스를 만들어야 합니다.

스택에 ReadOnlySpan<T> 할당되지만 가리키는 기본 데이터는 ReadOnlySpan<T> 할당되지 않을 수 있습니다. 따라서 a를 통해 ReadOnlySpan<T> 열거하는 것은 본질적으로 스레드로부터 안전한 프로시저가 아닙니다. 열거 중에 스레드 안전을 보장하려면 사용자 고유의 동기화를 구현해야 합니다.

.NET의 다른 열거자 구조와 달리 다음을 수행 ReadOnlySpan<T>.Enumerator합니다.

  • 또는 IEnumerator<T> 인터페이스를 IEnumerator 구현하지 않습니다. 이는 ReadOnlySpan<T>.Enumerator ref 구조체 이므로 boxed할 수 없기 때문입니다.

  • 범위의 Reset 첫 번째 요소 앞의 초기 위치로 열거자를 설정할 수 있는 메서드를 포함하지 않습니다. (메서드는 IEnumerator.Reset() 인터페이스의 일부로 구현되어야 하지만 대부분의 구현자는 예외를 throw하거나 구현을 제공하지 않습니다.)

속성

Current

열거자의 현재 위치에 있는 항목에 대한 참조를 가져옵니다.

메서드

MoveNext()

열거자를 ReadOnlySpan<T>의 다음 항목으로 이동합니다.

적용 대상