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

 

이것이 C#이다 | 박상현 - 교보문고

이것이 C#이다 | 전문가로 레벨업!C# 프로그래밍 완전 정복이 책은 C#의 기본, 고급 문법과 더불어 기초 클래스 라이브러리까지 다루고 있다. 총 22개 장으로, 앞서 배운 내용을 활용하면서 단계별

product.kyobobook.co.kr