제네릭은 은혜롭다
오늘은 C#의 제네릭이란 문법에 대해 소개해볼까 한다.
제네릭 = Generic! 왠지 Generalize라는 단어가 떠오르지 않는가?
맞다! 그단어!!!
일반화하다 라는 뜻의 Generalize
제네릭은 진짜 그런 기능이다.
아묻따! 예제부터 보자.
간단한 배열 복사 함수를 하나 선언해보겠다.
void copy(int[] source, int[] target)
{
for(int i=0; i < source.Length; i++)
target[i] = source[i];
}
그럼 이제 double 형 배열에 대해서도 배열 복사 함수를 선언해보라고 한다.
오버로딩을 이용해
void copy(double[] source, double[] target)
{
for(int i=0; i < source.Length; i++)
target[i] = source[i];
}
이렇게 할 수도 있지만 매번 이렇게 하기 힘드니...
형식을 T라고 일반화 한다.
그럼 이렇게 되는 것인가???
void copy(T[] source, T[] target)
{
for(int i=0; i < source.Length; i++)
target[i] = source[i];
}
Nope!!! 아직 아뉘야!!!!!
이러케하면 컴파일 할때 형식을 모르자냐@.@
void copy<T>(T[] source, T[] target)
{
for(int i=0;i<source.Length;i++)
target[i] = source[i];
}
일단 이렇게 써놓고, copy 메소드 사용시에 형식을 함께 넘겨주는 것이다!!!!
가령... int형 배열을 카피하고 싶으면
copy<int>(source, target) 이렇게 하면된다!!!
완전 멋진 문법 아닌가??? 와우내