Unity3d C# toolba 사용해보기

C# 클래스 일반화 (Class Generalization) 그리고 제약조건에 대해서 알아보겠습니다.

C#에서 메소드가 일반화가된다면.. 클래스도 당연히 되야되겠죠.. 이번시간에는 클래스의 일반화에 대해 알아보도록하겠습니다.

지난시간에 < > 꺽쇄안에 치환문자를 대입하는식으로 Generalization 메소드를 만드는 방법에 대해서 알아봤는데요  클래스라고해서
별반 다르지 않습니다.  쉽게문법을 만들어 적용시키는것도 정말 어려운 일인것 같습니다. 개발자들에게 편리성을주어 사용율을 높이는 것이니까요..

선언하는 방법은 이렇습니다.

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

메소드와..동일하네요...

실제 사용을 한다면.. 이런식으로해서 사용하면되네요.. 생각보다 간단합니다.

Test_generic<int> intAr = new Test_generic<int>();
Test_generic<string> strAr = new Test_generic<string>();

예제를 돌려서 한번 확인해보겠습니다.


C# Class Generalization Example

예전에 했었던 인덱서의 예제를 조금 변형해서 하였네요..  MyList<T> 이렇게해서.. 치환문자 T를 집어넣어서 했습니다.
그래서 실제 메인클래스/메소드부분에서..  MyList<string>  MyList<int> 이렇게 < > 안에 데이터형식만집어넣어 처리할 수 있도록 했죠..
여러모로 쓸모가 많을것 같습니다.

 하지만..  <T> 이렇게 되어있는 것에 T라는것은.. 모든형식을 대신할 수 있게되는것인데 이것때문에 때로는 문제가 발생할 소지가 있겠죠..

예를들어.. 클래스의 구현부분에 모든 형식의 데이터에 대해서 처리할 수 없는 타입이 들어와버린다면.. 에러가날테니 말이죠..

또한.. 어떠한 형식만 지정해서 사용해야한다라는 제한을 걸 어야 할 때도 분명 있을겁니다.. 혼자개발하는거면.. 그닥 신경안쓰셔도 되긴하겠지만.. 조건을 좀 걸어둔다면.. 에러가 나는것을 조금은 줄일수 있지 않을까 생각이드네요..

이럴경우 형식매개변수에 조건을 제약하는 방법이 있다고하네요..



C#일반화제약조건

아무래도 ..이런 조건에 해당하는것을 알아놓은것이 좋을 것 같네요

Generalization 메소드와 클래스에서 사용할 수 있는 제약조건들이지요..


C#일반화제약조건2



이제부터 막히기 시작하네요 ㅜㅜ 이거 이해가 안되면 다음으로 넘어가는게 쉽지 않을듯 합니다...

이상으로 C#의 클래스 일반화 및 제약조건에 대하여 알아봤습니다.













댓글