[C#] 제네릭 함수, 클래스
by #독개#제네릭은 자료형을 매개변수와 같은 방식으로 받아올 수 있다
요즘의 대부분 라이브러리는 제네릭을 모두 사용한다.
직접 제네릭 함수나, 클래스를 만들어서 사용하려고는 하지말자 고려해야 할 경우의 수가 너무 많다
필요성
우리가 매개변수에 미리 지정해둔 자료형을 인자로 받아오는데,
Print(int a) , Print(double a), Print(string a), Print(Student a) 이렇게 모든 자료형 마다 함수를
지정해줄 수 없다. 그래서 매개변수의 자료형마저 인자로 받아오면 한줄이면 된다
- Print<T>(T a)
- Print<T,U>(T a, U b)
여러개의 자료형을 받아오는 것도 가능하다
제네릭 함수
public class Generic
{
public void print<T>(T a) //제네릭메서드 정의
{
Console.WriteLine($"{a}");
}
}
static public void Main(string[] args)
{
Generic generic = new Generic();
generic.print<int>(1); //출력: 1
generic.print<string>("Hello"); //출력: Hello
//컴파일러가 인자를 보고 자동으로 제네릭 선언을 해줌
generic.print(1); //출력: 1
generic.print("Hello"); //출력: Hello
}
제네릭 클래스
public class Generic<T> //제네릭클래스 정의
{
public void print(T a)
{
Console.WriteLine($"{a}");
}
}
static public void Main(string[] args)
{
Generic<int> generic = new Generic<int>();
generic.print(1); //출력: 1
//컴파일러가 인자를 보고 자동으로 제네릭 선언을 해줌
generic.print(1); //출력: 1
}
//public class Generic<T> where T : class //T는 Class만 받겠다
//public class Generic<T> where T : Car //T는 Car를 상속 받은 클래스만 받겠다
//public class Generic<T> where T : IMachinable //T는 IMachinable인터페이스를 구현한 것만 받겠다.
public class Generic<T, U> //자료형 T와 U두개를 받겠다
{
public void print(T a, U b)
{
Console.WriteLine($"{a} {b}");
}
}
'🔥 프로그래밍 학습 > C#' 카테고리의 다른 글
[C#] System.String (0) | 2022.11.29 |
---|---|
[C#] Delegate 델리게이트 (0) | 2022.11.28 |
[C#] 구조체 Struct (0) | 2022.11.28 |
[C#] 인터페이스 INTERFACE , Loosely Coupling (0) | 2022.11.28 |
[C#] 추상 클래스 Abstract (0) | 2022.11.28 |
블로그의 정보
독한 개발자
#독개#