C# 배열 연속 데이터 채우기 Enumerable.Range

 

1. 반복 데이터 채우기

같은 값으로 컬렉션을 채워야하는 경우도 존재한다.

이때 사용할 수 있는 것이 Enumerable.Repeat

msdn : Enumerable.Repeat<TResult>(TResult, Int32) 
https://docs.microsoft.com/ko-kr/dotnet/api/system.linq.enumerable.repeat?view=net-5.0

첫 번째 인자는 반복할 값 (여기서는 숫자를 사용하였지만, 제네릭 객체이다)

두 번째 인자는 반복할 횟수 (int)

int[] myArray = Enumerable.Repeat(-1, 10).ToArray();

 

혹은 LINQ를 사용하지 않는 Array.Fill() 메서드도 존재한다.

int[] myArray = new int[10];
Array.Fill(myArray, -1);

 

 

2. 연속 데이터 채우기

리스트나 배열에 숫자를 순서대로 채워 넣어야 할 경우가 간혹 생긴다. 

우선 심플하게 생각해볼 수 있는 방법은 다음과 같다.

List<int> myList = new List<int>(10);

for (int i = 0; i < myList.Count; i++)
    myList[i] = i;

 

그런데 Linq의 Enumerable.Range(int32, int32)를 사용한다면 특정 구간의 숫자를 채우는 범위 컬렉션을 만들 수 있다!

 

msdn : Enumerable.Range
https://docs.microsoft.com/ko-kr/dotnet/api/system.linq.enumerable.range?view=net-5.0
using System.Linq;

List<int> myList = Enumerable.Range(0, 10).ToList(); // 0부터 10개를 채워라
int[] myArray = Enumerable.Range(0, 10).ToArray(); // 0부터 10개를 채워라

 

다음과 같이 채워진 것을 확인할 수 있다.

 

 

결론

 - 특정 컬렉션을 새로생성하면서 값을 채워넣을 때 유용하게 사용할 수 있을듯.

 - 하지만 값을 바꾸는게 아니라 새로운 리스트를 생성하기 때문에, 단순 값 변경이면 반복문이 좋을 듯 하다. 

 

 

댓글

Designed by JB FACTORY