gmcsでGenerics
今回から使えるようになったGenericsをテスト。Genericsを試すだけの実験君なのでつまらないですが。
ファイル:gmcs_1st.cs
using System; interface IFoo<T> { void Method<V>(V v); } class Foo<T> : IFoo<T> { public void Method<V>(V v) { Console.WriteLine("{0}.Method({1})", GetType(), v); } } class Bar<T, U> where U: IFoo<T>, new() { T t; U u; public void Method<V>(V v) where V:struct { t = default(T); if (t == null) Console.WriteLine("{0} is a class.", typeof(T)); u = new U(); u.Method(v); } } class Baz {} class Program { public static void Main() { Bar<Baz, Foo<Baz>> bar = new Bar<Baz, Foo<Baz>>(); bar.Method(0xffff); } }
コイツをgmcsでコンパイル。
> gmcs gmcs_1st.cs BETA SOFTWARE: Mono C# Compiler 1.1.2.0 for Generics Compilation succeeded
for Genericsが素敵。(^^;
で、実行してみると、
Baz is a class. Foo`1[Baz].Method(65535)
ちゃんと動作しますね。