Page 22 -
P. 22
2.1.2 시간을 절약하는 제네릭
앞서 살펴본 GenerateNames/PrintNames 코드를 List<T> 제네릭 타입을 이용하여 어떻게 개선할 2
수 있는지 살펴보자. List<T>는 T 타입의 요소를 저장할 수 있는 컬렉션이다. 앞의 경우라면 T는 C# 2
string이 될 것이다. 이제 StringCollection을 사용한 코드를 모두 List<string>으로 대체할 수
있다. 4
예제 2-4 List<string>을 이용하여 이름을 저장하고 출력하는 예 ▶ NamesWithList.cs
static List<string> GenerateNames()
{
List<string> names = new List<string>();
names.Add("Gamma");
names.Add("Vlissides");
names.Add("Johnson");
names.Add("Helm");
return names;
}
static void PrintNames(List<string> names)
{
foreach (string name in names)
{
Console.WriteLine(name);
}
}
List<T>를 이용하면 앞서 알아봤던 모든 문제를 해결할 수 있다.
● 배열처럼 컬렉션을 초기화할 때 크기를 미리 알아야 할 필요가 없다.
● 컬렉션에 저장할 요소의 타입은 T로 나타내며, 외부로 노출하는 API에서 요소의 타입을 참
조할 때는 T를 사용하면 된다. 즉, List<string>의 경우 string 타입의 객체만을 저장할 수
있으며, ArrayList와는 달리 string이 아닌 다른 타입의 객체를 삽입하려고 하면 컴파일 오
류가 발생한다.
● StringCollection 등의 타입과는 달리 어떤 타입과도 함께 사용할 수 있다.
4 반환 타입과 매개변수 타입으로 인터페이스를 사용하는 것은 의도적으로 언급하지 않았다. 이는 매우 흥미로운 주제이지만 지금은 제네릭에만
집중하도록 하자.
063