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개를 채워라
다음과 같이 채워진 것을 확인할 수 있다.
결론
- 특정 컬렉션을 새로생성하면서 값을 채워넣을 때 유용하게 사용할 수 있을듯.
- 하지만 값을 바꾸는게 아니라 새로운 리스트를 생성하기 때문에, 단순 값 변경이면 반복문이 좋을 듯 하다.
'🌍 C# Study > C# 케이스 스터디' 카테고리의 다른 글
HashSet vs HashTable vs Dictionary (0) | 2021.04.30 |
---|---|
C# 상속 클래스 부모의 생성자 호출 순서 (0) | 2021.04.26 |
C# 인덱서 Indexer (0) | 2020.07.13 |
C# Collection Foreach 에서 원소 삭제하기 (0) | 2019.12.15 |
C# params 키워드 : 가변 개수의 인수 (0) | 2019.12.13 |