genericがJavaよりC#の方が手に馴染む。
newしたり出来るのがいいね!
class Hoge<T> where T : new() { // コンパイルエラーにならない public T Create() { return new T(); } }
確かJavaだとこういう風にnewは出来なかったはず。
yield returnもJavaにはないC#の魅力的な所
foreachで回せるクラスが簡単に作れちゃう。
class Program { public static void Main(string[] args) { Hoge hoge = new Hoge(); foreach(int i in hoge) { Console.WriteLine(i); } } class Hoge : IEnumerable<int> { public IEnumerator<int> GetEnumerator() { foreach(int i in new int[]{1, 2, 3}) { yield return i; } } // もう1つのメソッドは省略 } }
今度暇つぶしに何か作ってみるかなぁ。