본문 바로가기
팁 & 노하우/C#

c# 반복문 foreach, for 에서 인덱스 번호 가져오기

by 대디동동 2023. 11. 2.
728x90

안녕하세요. 코딩 및 개발에 대한 팁을 알려드리는 대디동동의 동코딩동 시간입니다.

 

c# 반복문 foreach를 사용할 경우 지금 몇 번째인지 확인해야 하는 경우 어떻게 하는지 설명하니

끝까지 읽고 레벨업 하기 바랍니다.


C# 반복문에서 인덱스 (순번, 번호) 가져오기

C#에서 제공하는 반복문은 for, foreach, while, do while  등이 있는데

while, do while은 클래스 변수의 반복문으로 잘 사용하지 않아

대표적인 foreach와 for를 이용하는 방법을 설명하겠습니다.

첫 번째 for 반복문 사용할 경우

for 반복문은 가장 많이 사용하는 반복문입니다.

순번을 가져오기 위해서는 순번을 표시할 변수를 하나 선언하고,

반복문안에서 해당 변수에 +1 하여 순번을 늘리면 되는 간단한 방법입니다.

 

하지만, 실무에서는 클래스를 만들고 클래스 변수를 반복하는 경우가 대부분이기 때문에

아래와 같은 클래스가 있다고 가정하여 설명하겠습니다.

클래스 처리 및 변수 저장

//클래스 정의 및 변수 저장
List<Car> lstCars = new List<Car>();

Car car1 = new Car();
car1.Company = "Kia";
car1.Name = "Niro";
lstCars.Add(car1);

Car car2 = new Car();
car2.Company = "Hyundai";
car2.Name = "Sonata";
lstCars.Add(car2);

Car car3 = new Car();
car3.Company = "Genesis";
car3.Name = "GV80";
lstCars.Add(car3);

 

for 문 이용한 예제

//for문 사용할 경우	   
for (int i = 0; i < lstCars.Count; i++)
{
    System.Diagnostics.Debug.WriteLine(i + " = " + lstCars[i].Name + " " +  lstCars[i].Company);
}

//처리결과
0 = Niro,Kia
1 = Sonata, Hyundai
2 = GV80, Genesis

 

두 번째, foreach 반복문 사용할 경우

foreach 반복문은 Model 클래스의 Select를 이용하면 인덱스 값을 구할 수 있습니다.

//순번이 필요 없을 때
foreach (var item in lstCars)
{
    System.Diagnostics.Debug.WriteLine(item.Name + " " +  item.Company);
}

//처리결과
Niro,Kia
Sonata, Hyundai
GV80, Genesis


//순번이 필요할 때

foreach (var item in lstCars.Select((val, index) => new { val, index }))
{
    var car = item.val;
    var i = item.index;

    System.Diagnostics.Debug.WriteLine(i + " = " + car.Name + " " +  car.Company);
}

//처리결과
0 = Niro,Kia
1 = Sonata, Hyundai
2 = GV80, Genesis

 

인덱스 값이 0 부터 시작인 것만 주의하면 됩니다.


실무에서는 for문도 많이 사용하지만,

객체 지향 프로그램에서는 객체를 저장하는 변수를 많이 사용하며

C#에는 Linq라는 강력한 도구가 있어서 foreach를 사용하여 코딩하면

추후 확장 및 유지보수에 유리하니 가급적 foreach를 사용하는 것을 추천하니

제 게시물을 참고해서 Level Up ~ 하시기 바랍니다.

 

 

반응형