본문 바로가기

Programming/C#

C# loop For vs Foreach

반응형

 

반복문 작성 시 For와 Foreach 어떤 것을 사용하는 것이 좋을까?

당연하게도 정답은 상황에 따라 다르다 이지만 개인적으로 실제 프로젝트에선 Default로 Foreach를

알고리즘 풀이에선 Default로 For를 사용하는 편이다.

이렇게 사용하는 가장 큰 이유는 Foreach의 경우 확장성, For의 경우 속도가 빠르기 때문이다.

 

아래는 각각의 장단점이다.

 

Foreach

장점 :

  • 다양한 컬렉션 유형에서 동작하는 코드를 짤 수 있음 (확장성)
public void Write<T>(IEnumerable<T> somethingToWrite)
{
	foreach (var item in somethingToWrite)
        {
            Console.WriteLine(item);
        }
}
  • 보다 직관적
  • 보다 간결한 코드

단점

  • index를 사용해야 할 때 비효율적
  • 전체가 아닌 일부를 반복하는데 비효율적
  • 항목에 직접 접근할 수 없음
foreach (var number in numbers)
{
	// Error -> Cannot assing to 'number' because it is a 'foreach iteration variable'
	number++;
}

 

For

장점 :

  • 시작값, 조건값, 증감값 조작에 용이함
  • foreach 보다 빠름
  • 항목에 직접 접근할 수 있음

단점 :

  • 확장성이 낮음

 

ref : stackOverFlow

반응형