C#의 foreach 루프
Q: foreach 루프를 지원하는 개체 유형은 무엇입니까?
답변: foreach
루프의 핵심 사용에는 MoveNext()
메서드와 Current
속성이 있는 객체를 반환하는 GetEnumerator()
메서드가 필요합니다. 간단히 말해서, 가장 일반적인 유형은 IEnumerable
/IEnumerable<T>
을 구현하는 유형입니다. 여기에는 ICollection
, ICollection<T>
, 배열 등과 같은 Collection<T>
/List<T>
구현이 포함됩니다.
어떻게 작동하나요?
foreach(int i in obj) {...}
형식의 foreach
루프는 기본적으로 다음과 동일합니다.
<code class="language-csharp">var tmp = obj.GetEnumerator(); int i; // C# 4.0及之前版本 while(tmp.MoveNext()) { int i; // C# 5.0及之后版本 i = tmp.Current; {...} // 你的代码 }</code>
IEnumerator
객체(tmp
)는 컬렉션의 요소를 반복하고 각 반복에서 루프 변수에 할당하는 데 사용됩니다. 열거자가 Dispose()
메서드를 지원하는 경우 using
문을 사용하는 것과 마찬가지로 호출됩니다.
참고: 루프 변수 선언 "int i
"의 위치는 C# 4.0과 C# 5.0에서 다릅니다. C# 5.0에서는 루프 내부에 선언하고 C# 4.0에서는 루프 외부에 선언합니다. 이러한 구별은 클로저에서 루프 변수를 사용하거나 루프 내에서 람다 표현식을 사용할 때 중요합니다.
위 내용은 foreach 루프를 지원하는 C# 개체 유형은 무엇이며 어떻게 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!