n times・・・
いやまぁ遊びだけど。
ruby とかで、
3.times { puts 'Hello, world!' }
ってやつ。
class Act { public delegate void ActDelegate(); ActDelegate act; public Act(ActDelegate act) { this.act = act; } public static ActDelegate operator *(Act a, int times) { return delegate { for (int i = 0; i < times; i++) a.act(); }; } public static ActDelegate operator +(Act a1, Act a2) { return delegate { a1.act(); a2.act(); }; } public static ActDelegate operator +(ActDelegate a1, Act a2) { return delegate { a1(); a2.act(); }; } }
使い方はこう。
Act a = new Act(delegate { Console.WriteLine("Hello, world!"); }); (a * 3)(); Act b = new Act(delegate { Console.WriteLine("Hoge, world!"); }); (b + a + b * 3 + a)();
何に使うかだって・・・?さぁ?
追記:
3.0 な人たちに、拡張メソッドで、とか、ラムダ式で、とか色々とアドバイスもらいました。今泣きながら Visual C# 2008 Express Edition を DL 中w