C# 2.0 스펙을 보다가, 말로만 듣던 .NET 2.0의 Generic의 실체를 비로소 알게 되었습니다. 흐흐 .NET 2.0 스펙만 봐서는 이거 해서 뭐가 좋은지 몰랐는데 -ㅁ-;
C# 2.0의 generics는 파이썬이나 루비같은 객체지향 스크립트 언어에서 아무 객체나 마구 같은 방법으로 쓸 수 있다는 장점을 정적인 언어에서 지원하기 위한 것으로 보이는데, MFC에서 CWnd나 CObject로 거기서에서 virtual을 무지하게 써서 상속된 MFC 클래스들 거의 대부분을 다룰 수 있다는 것을 생각해 보면 결국 MS가 그렇게도 꿈꾸던 것을 드디어 이룬 것이 아닐까 싶군요;; 하여간, 그동안 동적 타이핑 언어들의 .NET 구현에 가장 큰 걸림돌이 해결된 것 같아서, 아주 마음에 드네요! 그나저나, C++의 템플릿같은 타입을 인자로 받는 짓을 지원하느라, C++처럼 <type>을 쓰는데.. 이건 C++ 템플릿에 데인 기억이 있어서 꺼림칙 -O-; 좀 더 예쁜 기호도 있지 않았을까 싶은데 하필이면 ㅡ.ㅜ
기본적인 사용은 object객체를 쓰면 템플릿처럼 안 쓰고도 된답니다.
1 2 3 4 5 6 7 |
public class Stack { object[] items; int count; public void Push(object item) {...} public object Pop() {...} } |
그리고, 타입을 인자로 받을 때는
1 2 3 4 5 6 7 |
public class Stack<T> { T[] items; int count; public void Push(T item) {...} public T Pop() {...} } |
이렇게 해서 쓸 때는..
1 2 3 |
Stack<int> stack = new Stack<int>(); stack.Push(3); int x = stack.Pop(); |
얼른 모노에서도 구현되었으면 좋겠네요~~ 크크;;
그리고, 참고로 Brian Lloyd의 Python.NET 1.0 Beta1이 나왔습니다. 별로 달라진 점은 없는 것 같은데.. 이제 generics도 나왔으니 브릿지 필요 없이 직접 .NET CLR 언어로 구현하는 편이 나을 것 같군요 크~
이런 대회도 있군요. ^ ^
ㄷㄷㄷ;;
혹시 장 굴드로 개명을?? ==