C#

C# 제네릭

doridam 2023. 7. 10. 16:31


1. 제네릭

여러가지 동작에 대응하는 타입을 확정하지 않고 타입 파라미터로 받아들이도록 클래스를 정의하는 것.
일부 데이터 타입으로 인한 중복 클래스 생성을 하지 않아도 된다. 적용의 경우 클래스, 인터페이스, 메서드에도 가능하다.

제네릭을 적용한 예제이다. MyStack 클래스를 제네릭으로 선언한뒤 내부 메서드의 매개변수 및 타입도 제네릭으로 선언하여 객체 생성타입에 따라 다른 타입을 가지는 객체로 만들어지도록 구현하였다.
int 로 생성된 numberstack과 string 으로 생성된 nameStack에 각각 데이터를 넣고 출력하는 예제이다.

2. 제네릭 타입 제약

제네릭 타입을 선언할 때, value 타입인지 Reference 타입인지 클래스 파생, 인터페이스 구현 등을 지정할 수 있는데, 이는 where T : 제약조건 과 같은 식으로 가능하다.

이전과 동일한 코드에 where T : struct 을 통해 value 타입으로 지정하여 reference 타입인 string은 에러가 발생하는 모습을 볼 수 있다.