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
   17   18   19   20   21   22   23   24   25   26   27