프로그래밍/C#

[C#] 일반화 프로그래밍_ <T>의 마법

gameObject 2023. 6. 23. 01:27
728x90

1. 일반화 프로그래밍이 필요한 이유

프로그래밍을 하다보면 함수나 클래스끼리 내부의 내용은 같은데, 매개변수의 형식만 다른 경우가 생길 때가 있다.

그때 일반화 프로그래밍을 접목시키면 수십개의 데이터타입을 다시 명시하여 함수나 클래스를 생성해줄 필요 없이

선언시에만 데이터타입을 선언해주며 함수와 클래스를 이용할 수 있다. 그래서 <T>의 마법이다.

 

2. 일반화 메소드

// where을 이용하면 제한을 걸 수 있다. 이제 여기에 들어올수 있는 타입은 customClass를 상속받은 타입이어야 한다.
 // 이부분이 var와 다르다.
 
static void PrintValue<T>(T anyValue) where T: customClass 
{                                                         
    anyValue.PrintPosition();
    Console.WriteLine("어떤 값이 넘어오든 출력해보겠다. -> {0}", anyValue);
}
한정자 반환형식 메소드이름<T> (매개변수) +@ where T : 제약형식
{

}

where은 있어도 되고 없어도 된다. 

where의 역할은 T에 제약을 걸어주겠다는 뜻이다.

struct, class, new(), 인터페이스, T와 다른 매개변수 U와 같은 것들을 적을 수 있다.

 

3. 일반화 클래스

일반화 클래스는 데이터 형식을 일반화한 클래스이다. 

class 클래스이름 <형식 매개변수>
{

}

문법은 위와 같다.

 

추후 사용하게 될 때는

//추후 사용시
//ex)
클래스 이름<int> a = new 클래스이름<int>();
클래스 이름<string> b = new 클래스이름<string>();

사용할 데이터타입만 <>안에 넣어주고 선언하여 사용하면 된다.

 

 

다양한 상황을 겪어봐야 정확한 예시를 들 수 있을 것 같다.

역시 상상되는건 반복적으로 사용될 법한 것들에 잘 이용할수 있을것같다.

728x90