프로그래밍에서 재사용성은 매우 중요하다.
특정 자료형에 종속되지 않고, 다양한 타입에 대해 동작하는 코드를 만들 수 있다면
유지보수성과 확장성이 크게 향상된다.
C#에서는 이를 가능하게 해주는 기능으로 **제네릭(Generic)**을 제공한다.
제네릭은 클래스, 메소드, 인터페이스 등에서 자료형을 일반화하여
형식 안정성과 코드 재사용을 동시에 만족시킨다.
자료형을 미리 지정하지 않고, 필요 시점에 타입을 지정하는 문법
csharp
복사편집
public class Box<T>
{
private T item;
public void Store(T value)
{
item = value;
}
public T Pull()
{
return item;
}
}
csharp
복사편집
Box<int> intBox = new Box<int>();
intBox.Store(123);
Console.WriteLine(intBox.Pull()); // 123
Box<string> strBox = new Box<string>();
strBox.Store("Hello");
Console.WriteLine(strBox.Pull()); // Hello
T
는 타입 매개변수기존 방식 | 제네릭 방식 |
---|---|
object로 타입을 일반화 → 박싱/언박싱 발생 | 타입 안정성 보장 + 성능 유지 |
매 타입마다 클래스/메소드 생성 필요 | 하나의 코드로 다양한 타입 대응 |
형변환 오류 위험 있음 | 컴파일 타임에 타입 검사 가능 |
특정 메소드에만 타입 매개변수를 적용할 수 있음