>백엔드 개발 >C++ >C# foreach 루프에서 반복 색인에 액세스하려면 어떻게해야합니까?

C# foreach 루프에서 반복 색인에 액세스하려면 어떻게해야합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-27 17:56:10237검색

How Can I Access the Iteration Index in a C# Foreach Loop?

C# Foreach 루프 내에서 반복 인덱스 액세스

C# foreach 루프는 컬렉션을 반복하는 간결한 방법을 제공합니다. 그러나 반복 인덱스에 직접 액세스하는 것은 기본적으로 지원되지 않습니다. 이를 달성하는 몇 가지 방법은 다음과 같습니다.

1. 수동 카운터:

가장 간단한 접근 방식은 수동으로 카운터를 증가시키는 것입니다.

<code class="language-csharp">int index = 0;
foreach (var item in myCollection)
{
    // Use 'item' and 'index'
    index++;
}</code>

2. LINQ의 Select(색인 포함):

LINQ의 Select 메서드는 인덱스를 포함하는 오버로드를 제공합니다.

<code class="language-csharp">foreach (var item in myCollection.Select((value, index) => new { Value = value, Index = index }))
{
    var value = item.Value;
    var index = item.Index;
    // Use 'value' and 'index'
}</code>

이렇게 하면 값과 인덱스가 모두 포함된 익명 유형이 생성됩니다.

3. ValueTuple(C# 7.0 이상):

성능을 향상하고 힙 할당을 방지하려면(특히 대규모 컬렉션의 경우) ValueTuple:

을 사용하세요.
<code class="language-csharp">foreach (var (value, index) in myCollection.Select((value, index) => (value, index)))
{
    // Access 'value' and 'index' directly
}</code>

더 깔끔한 구문을 위해 튜플 분해를 활용합니다.

4. For 루프(대체):

색인 액세스가 필요한 상황에서는 표준 for 루프가 보다 직접적인 솔루션을 제공합니다.

<code class="language-csharp">for (int index = 0; index < myCollection.Count; index++)
{
    var item = myCollection[index];
    // Use 'item' and 'index'
}</code>

이 접근 방식은 일반적으로 인덱스가 루프 논리에 중요한 경우에 선호됩니다. 코딩 스타일과 성능 요구 사항에 가장 적합한 방법을 선택하세요. 간단한 경우에는 수동 카운터로 충분합니다. 더 큰 컬렉션이나 더 복잡한 시나리오의 경우 ValueTuple이 포함된 LINQ는 가독성과 효율성의 균형을 제공합니다. for 루프는 인덱스 조작이 루프 작업의 핵심인 경우 실행 가능한 옵션으로 남아 있습니다.

위 내용은 C# foreach 루프에서 반복 색인에 액세스하려면 어떻게해야합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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