더북(TheBook)

제네릭 개체를 초기화하는 세 가지 방법 정리

단순한 int, string이 아닌 사용자 정의된 클래스를 List<T> 제네릭 리스트 클래스의 T에 전달하여 구조화해서 사용할 수 있습니다. 특정 클래스 형태의 리스트 클래스로 12개월 일사량을 출력하는 방법을 예제로 살펴보겠습니다.

> public class Insolation
. {
.     public int Month { get; set; }   //월
.     public float Value { get; set; } //일사량 값
. }
>
> //① 개체 형식의 리스트 생성: 컬렉션 이니셜라이저로 값 초기화
> List<Insolation> insolations = new List<Insolation>()
. {
.     new Insolation { Month = 1, Value = 0.3f },
.     new Insolation { Month = 2, Value = 0.6f },
.     new Insolation { Month = 3, Value = 0.9f },
.     new Insolation { Month = 4, Value = 1.2f }
. };
>
> //② Add() 메서드로 리스트에 값 추가: 개체 이니셜라이저로 값 초기화
. insolations.Add(new Insolation() { Month = 5, Value = 1.5f });
. insolations.Add(new Insolation() { Month = 6, Value = 1.8f });
. insolations.Add(new Insolation() { Month = 7, Value = 1.6f });
. insolations.Add(new Insolation() { Month = 8, Value = 1.5f });
>
> //③ AddRange() 메서드로 리스트에 값들 추가
> var tempInsolations = new List<Insolation>()
. {
.     new Insolation { Month = 9, Value = 1.2f },
.     new Insolation { Month = 10, Value = 0.9f },
.     new Insolation { Month = 11, Value = 0.6f },
.     new Insolation { Month = 12, Value = 0.1f }
. };
. insolations.AddRange(tempInsolations);
>
> Console.WriteLine("연간 일사량");   //④ 리스트 출력
연간 일사량
> foreach (var insolation in insolations)
. {
.     Console.WriteLine($"{insolation.Month:00} - {insolation.Value}");
. }
01 - 0.3
02 - 0.6
03 - 0.9
04 - 1.2
05 - 1.5
06 - 1.8
07 - 1.6
08 - 1.5
09 - 1.2
10 - 0.9
11 - 0.6
12 - 0.1

처럼 List<T>List<Insolation> 형태로 사용자 정의 클래스를 넣고 개체를 생성할 수 있습니다. 리스트를 선언과 동시에 초기화할 때는 컬렉션 이니셜라이저를 사용하여 한 번에 데이터 여러 개를 줄 수 있습니다.

이미 기본값으로 초기화된 리스트에 추가로 데이터를 입력할 때는 처럼 Add() 메서드에 개체를 개체 이니셜라이저로 줄 수 있습니다. 또 처럼 AddRange() 메서드로 데이터 리스트 여러 개를 한꺼번에 줄 수도 있습니다.

리스트 값을 출력할 때는 foreach 문으로 반복해서 사용합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.