C#
일반화 프로그래밍
윤태영(Coding)
2023. 6. 15. 23:40
< 일반화 프로그래밍이란? >
일반화 프로그래밍이란, 메서드나 클래스를 정의할 때 특정 타입이 아닌, 타입 파라미터를 사용하여 여러 타입에 대해 동작하는 코드를 작성하는 것이다.
일반화 프로그래밍을 상자에 비유하자면, 상자 안에는 무엇이든 넣을 수 있다. 과자도 넣을 수 있고, 책도 넣을 수 있다. 일반화 프로그래밍에서의 상자가 바로 '제네릭 클래스'나 '제네릭 메서드'다.
< 일반화 프로그래밍의 장점 >
- 타입 안전(Type Safety) : 컴파일 시점에 타입 검사를 하기 때문에 런타임 오류를 줄일 수 있다.
- 재사용성(Reusability) : 하나의 코드로 다양한 타입에 대응할 수 있으므로 코드 중복을 줄일 수 있다.
- 성능 향상(Performance): 박싱(Boxing)과 언박싱(Unboxing)을 줄여 메모리와 CPU 사용량을 최적화한다.
[제네릭 클래스 만들기]
public class MyBox<T>
{
private T item;
public void Put(T item)
{
this.item = item;
}
public T TakeOut()
{
return item;
}
}
위의 예시에서 MyBox는 제네릭 클래스다. <T>는 타입 파라미터로, 어떤 타입이든 될 수 있다.
[제네릭 클래스 사용해보기]
MyBox<string> stringBox = new MyBox<string>();
stringBox.Put("Hello, Generics!");
Console.WriteLine(stringBox.TakeOut()); // 출력: Hello, Generics!
MyBox<int> intBox = new MyBox<int>();
intBox.Put(123);
Console.WriteLine(intBox.TakeOut()); // 출력: 123
MyBox를 사용하여 문자열과 정수를 담는 상자를 만들었다.
[제네릭 메서드 만들기]
public class Utils
{
public static void Swap<T>(ref T a, ref T b)
{
T temp = a;
a = b;
b = temp;
}
}
Swap 메서드는 두 개의 값을 교환한다. 여기서도 타입 파라미터 <T>를 사용한다.
[제네릭 메서드 사용해보기]
int a = 5, b = 10;
Utils.Swap(ref a, ref b);
Console.WriteLine($"a: {a}, b: {b}"); // 출력: a: 10, b: 5
string x = "hello", y = "world";
Utils.Swap(ref x, ref y);
Console.WriteLine($"x: {x}, y: {y}"); // 출력: x: world, y: hello
숫자 뿐만 아니라 문자열도 바꿀 수 있다.
Reference : 이것이 C#이다
https://product.kyobobook.co.kr/detail/S000201856223