ジェネリクス
ジェネリクスについて。
C++でminを書く場合、自由度は少ない。C#だといろんな書き方がある。
static int Min1(int i, int j) { return i.CompareTo(j) < 0 ? i : j; } static T Min2<T>(T i, T j) where T : IComparable<T> { return i.CompareTo(j) < 0 ? i : j; } static T Min3<T>(T i, T j) where T : IComparable { return i.CompareTo(j) < 0 ? i : j; } static IComparable<T> Min4<T>(IComparable<T> i, T j) where T : IComparable<T> { return i.CompareTo(j) < 0 ? i : j; } static IComparable Min5(IComparable i, IComparable j) { return i.CompareTo(j) < 0 ? i : j; }
速度は、Min1 = Min2 < Min3 < Min4 < Min5 となる。結論として、Min2で作成し、よく使うものは Min1 でオーバロードすればよい。
勉強会で、PostSharp、VSTO 、Wintellect Power Collection 、デバッガビジュアライザの発表をする予定。
新しい try構文を考えた。
try { ... catch (XxxException e1): catch (YyyException e2): catch: ... finally: ... }
ブロックは1つになり、catchと finallyはラベルとなる。こうすると、try ブロックの変数をcatch ブロックで使える。また、XxxExceptionの処理とYyyExceptionの処理が同じなら、switchと同じく1つ書くだけでよい。