상속된 Generic 타입 만들기, 타입의 제약 사항 선언 ( Generics Constraint )

출처 : 


http://www.csharpstudy.com/CSharp/CSharp-generics.aspx






Generics 타입 제약(constraint) 

C# Generics를 선언할 때, 타입 파라미터가 Value Type인지 Reference 타입인지, 또는 어떤 특정 베이스 클래스로부터 파생된 타입인지, 어떤 인터페이스를 구현한 타입인지 등등을 지정할 수 있는데, 이는 where T : 제약조건과 같은 식으로 where 뒤에 제약 조건을 붙이면 가능하다. 아래는 다양한 제약을 가한 예제들이다. 

예제

// T는 Value 타입
class MyClass<T> where T : struct 

// T는 Reference 타입
class MyClass<T> where T : class

// T는 디폴트 생성자를 가져야 함
class MyClass<T> where T : new() 

// T는 MyBase의 파생클래스이어야 함
class MyClass<T> where T : MyBase

// T는 IComparable 인터페이스를 가져야 함
class MyClass<T> where T : IComparable

// 좀 더 복잡한 제약들
class EmployeeList<T> where T : Employee,
   IEmployee, IComparable<T>, new()
{
}


저작자 표시
신고
Yamecoder 야매코더_
C# 2016.11.19 14:35
Powerd by Tistory, designed by criuce
rss