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