>백엔드 개발 >C++ >foreach 루프를 지원하는 C# 개체 유형은 무엇이며 어떻게 작동합니까?

foreach 루프를 지원하는 C# 개체 유형은 무엇이며 어떻게 작동합니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-10 10:48:40594검색

Which C# Object Types Support foreach Loops and How Do They Work?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.