C++을 다루어보았고, 어느정도 고급쪽의 기술을 알게된다면 Template라는 것을 사용해보셨을 겁니다. 개념상 기존의 프로그래밍과 다른 패러다임을 띄고 있고 데이터표현의 완전성을 지니기 때문에 새로운 것이죠. 그럼 Generics 라는 것은 혹시 들어보셨는지 모르겠습니다. Generics는 Java나 .Net 환경에서 지원하는 새로운 문법입니다. Template보다는 제약이 심하고, 컴파일러 측면에서 지원해주는 그런 문법입니다. 역시 말만 해서는 알아듣기 힘들겠죠??
다음과 같이 사용한다면 해당 Xml클래스 내부에서는 T 형을 데이터 타입으로 취하는 개체를 생성하여 사용할 수 있습니다. 바로 Template와 동일하죠. 대신 많은 부분에서 C++ Template와 동일한 기능들을 제공하지는 않습니다. 그리고 template< typename T >와 같은 키워드를 사용하지 않고도 <T>만 붙여줘도 Generics기능이 작동하게 됩니다. 그런데 한 가지 추가적인 기능이 존재하죠. T에 대한 데이터 타입의 제한을 걸어버릴 수 있죠.
위와 같은 where T : A 라는 조건을 달아줄 경우 T의 데이터 타입은 A 혹은 A에서 파생된 개체로 제한이 걸리게 됩니다. 만약 다른 타입을 넣으려고 한다면 컴파일러 자체에서 지정할 수 없는 형태라고 에러가 발생하죠. 이 방법을 사용하면 데이터 타입을 제한하고자 할 때는 원하는 목적만큼 코딩을 수행할 수 있게 됩니다. 특히 라이브러리를 개발하는 쪽에서는 그 라이브러리를 사용하는 쪽이 한 가지의 방법 외 다른 방향으로 빠지지 않도록 도와주어야 하는데, 이러한 부분에서 도움을 주게 되는 것이죠. 약간은 부족할 지도, 편리할지도 모르는 문법이지만 어느 것이나 그렇듯이 잘 사용한다면 아주 강력한 무기가 될 수 있겠죠^^
"Language / C#" 분류의 다른 글
| RCW 에러의 원인 - ??? (2) | 2008/04/10 |
| C# Application - Main 에서 Try-Catch 오작동 해결하는 방법 (7) | 2008/04/07 |
| Systeml.Xml in C# - C#에서 Xml 사용하는 방법 (0) | 2008/03/18 |
| C# As Casting - 새로운 캐스팅 방법 (1) | 2008/03/17 |

댓글을 달아 주세요