Page 23 -
P. 23

제네릭을 이용하면 메서드의 입력으로 타입 그 자체를 전달할 수도 있다. 이에 대해서 좀 더 자세
               히 살펴보고자 몇 가지 용어를 추가로 알아보자.



               타입 매개변수와 타입 인수

               매개변수(parameter)와 인수(argument)는 C#에 제네릭 기능을 추가하는 것과 상관없이, 지난 수십 년
               동안 다양한 언어에 걸쳐 사용되던 용어다. 메서드를 선언할 때는 입력을 매개변수로 선언하고,
               메서드를 호출할 때는 입력값으로 인수를 전달한다. 그림 2-1에 이 둘 사이의 관계를 나타냈다.


                  그림 2-1 메서드의 매개변수와 인수의 관계
                                            ݒѐ߸ࣻ

               QVCMJD TUBUJD WPJE .FUIPE TUSJOH OBNF  JOU WBMVF  \     ^

               TUSJOH DVTUPNFS/BNF    +PO
               .FUIPE DVTUPNFS/BNF


                 OBNF ݒѐ߸ࣻী    WBMVF ݒѐ߸ࣻী
                    ؀ೠ ੋࣻ         ؀ೠ ੋࣻ


               인수의 값은 메서드 내에서 매개변수의 초깃값으로 사용된다. 제네릭에서는 타입 매개변수(type
               parameter)와 타입 인수(type argument)라는 용어가 추가적으로 사용되는데, 이는 동일한 정의를 타
               입에 적용한 것이다. 제네릭 타입이나 제네릭 메서드를 정의할 때는 타입 매개변수를 포함하는데,
               꺾쇠괄호 안에 타입 매개변수를 둔다. 제네릭 타입이나 메서드 내의 코드에서는 이 타입 매개변수

               를 일반 타입처럼 사용하면 된다(타입 매개변수가 어떤 타입으로 지정되는지는 정확히 알지 못해
               도 된다).

               제네릭 타입이나 제네릭 메서드를 사용할 때는 이름 다음에 꺾쇠괄호를 두고 그 안에 타입 인수를
               전달한다. 그림 2-2에서는 List<T>를 정의할 때와 사용할 때를 비교해 봤다.

                  그림 2-2 타입 매개변수와 타입 인수의 관계
               QVCMJD DMBTT -JTU 5
               \
                             ఋੑ ݒѐ߸ࣻ
               ^

               -JTU TUSJOH  MJTU   OFX -JTU TUSJOH


                             ఋੑ ੋࣻ


         064
   18   19   20   21   22   23   24   25   26   27   28