Microsoft.NET SDK 2.0 Beta1
入れました。C#では、Generic Type使えるようになってますね。
using System; class MyClass{ private MyType o; public MyClass(MyType o) { this.o = o; } public MyType Get() { return o; } public M MyMethod (M m) { return m; } } public class MainClass { public static void Main(string[] args) { MyClass m = new MyClass ("hoge"); string v = m.Get(); Console.WriteLine(v); int i = 0; i = m.MyMethod(i); Console.WriteLine(i); } }
Generic TypeにMainが置けないのは仕様らしい。
また、パラメータタイプには親クラスをwhereで指定できる。さらに親タイプには自分やパラメータタイプも指定可能(ただし、templateではないので、自分のクラスは自身のパラメータタイプ*1を親にはすることはできません)
class MyClass2: ContextBoundObject where MyType : MyClass2 // どう具体化するのかな? where MyType2 : MyType { private MyType o; public MyClass2(MyType o) { this.o = o; } public MyType Get() { return o; } public M MyMethod (M m) where M : ContextBoundObject { return m; } }
あとC#としては、Pythonのyieldのようなyield文や、delegateという匿名メソッドオブジェクト(JavaScriptでのfunctionのようなもの)、partialで指定する分割クラス(1つのクラスの複数のファイルに分割して書ける機能)などあるらしいので、試してみたい。
Framework v2.0のマニュアルって、オンラインではどこにあるのだろうか*2。
*1:パラメータつきタイプのことではなくて<>の中にあるタイプのこと
*2:.NET SDK 2.0 Beta1オンラインドキュメント: http://lab.msdn.microsoft.com/library/