728x90
동일한 내용이지만 데이터 타입만 다른 메소드를 사용할 때, 원래대로라면 매번 데이터 타입만 다르고 내용은 같은 메소드를 만들어주어야 한다. 이때 Generic Type을 사용하면 메소드를 한 번만 호출하고도 원하는 기능을 모두 사용할 수 있다.
void Swap<T> (ref T a,ref T b)
{
var temp = a;
a = b;
b = temp;
}
a와 b의 자리를 바꿔주는 간단한 예시문이다. 이름 뒤에 <T>를 붙여 모든 데이터 타입을 아우를 수 있게 됐다.
class Program
{
void Swap<T> (ref T a,ref T b)
{
var temp = a;
a = b;
b = temp;
}
void IntProcess()
{
int a = 1;
int b = 2;
Swap (ref a, ref b);
Console.WriteLine($"a = {a} b = {b}");
}
void StringProcess()
{
string a = "안녕";
string b = "Hi";
Swap (ref a, ref b);
Console.WriteLine($"a = {a} b = {b}");
}
static void Main(string[] args)
{
var p = new Program();
p.IntProcess();
p.StringProcess();
}
}
int타입과 string타입에서 모두 사용 가능하다!
void Swap<T> (ref T a,ref T b) where T : struct
처럼 제약 조건을 걸 수도 있다.
728x90
'언어 > C#' 카테고리의 다른 글
[C#] Queue과 Stack (0) | 2022.05.02 |
---|---|
[C#] 함수, 클래스, 객체, 인스턴스, 생성자 (0) | 2022.04.25 |
[C#] temp를 사용한 자리 바꿔치기 (0) | 2022.04.25 |
[C#] CS0122 보호 수준 때문에 액세스할 수 없습니다 (0) | 2022.04.25 |
[C#] overloading과 overriding (0) | 2022.04.25 |