Programming Tips

for VS foreach

최애뎡 2021. 6. 29. 23:38
728x90
반응형
            List<int> list_int = new List<int> { 1, 2, 3, 4, 5 };

            for (int i = 0; i < list_int.Count; i++)
            {
                Console.WriteLine(list_int[i]);
            }

            foreach (var value in list_int)
            {
                Console.WriteLine(value);
            }

일단 둘 다 반복문이고 위는 동일한 결과를 낸다.

 

1. for 

- for문 루프 안의 내용을 반복 실행

- 조건식에서 오류를 낼 수 있음

- 반복 중에 값을 변경하기 용이

List<int> list_int = new List<int> { 1, 2, 3, 4, 5 };

for (int i = 0; i < list_int.Count; i++)
{
  Console.WriteLine(list_int[i]);
  list_int[i] += 1;
}

 

2. foreach

- collection에 주로 사용 -> collection의 요소를 하나씩 가져와서 사용

- 가독성이 좋음

[3차원 배열을 순환할 때 for문으로 표현하면 굉장히 코드가 복잡해지나 foreach로 하면 편함]

Array[,,] arr = new Array[5, 5, 10];

foreach (var value in arr)
{

}

- for문 조건에서 발생하는 오류가 날 일이 없음

- 순환할 때 좋음

 

* 성능적인 측면에서 for가 foreach보다 빠르다고 알고 있는데 사실상 그렇게 큰 엄청난 차이를 보이지는 않는다.

[여러 테스트를 한 글들을 봤지만 솔직히 엄청난 차이가 나는 건 아닌 거 같고 여기서 성능 차이를 개선하기보단 게임으로 예를 들면 다른 측면에서 성능을 개선하는 게 더 좋지 않을까 싶은..? for, foreach를 전체 코드에서 엄청나게 많이 사용하는 것도 아니니까!]

* collection이든 index를 사용하여 값을 중간에 변경하기에는 for문을 사용

* 전체를 한번 쭉 돌아야할 때는 간편하게 foreach문을 사용

 

뭐 사실 여러 글을 찾아봤지만 결국 상황에 따라 개발자 맘

- 근데 주관적인 생각으론 반복문 중간에 값을 바꾸던지 그 순간의 index를 확인한다든지 할때는 for문을 사용하고 그냥 collection을 한바꾸 쭉 돌릴 때는 foreach를 사용하면 좋지 않을까!@!@!@~

반응형