遅延

Pythonを触り始めたころ、こんなこと出来たりするのかなと対話してみたら出来て少し感動した。

>>> class Hoge :
        def method( self ) : print "hello"

>>> foo = Hoge
>>> instance = foo()
>>> instance.method()
hello

似たようなことをC#3.0でやるとすると・・・

public class LambdaTest
{
	public void Test()
	{
		var foo = CreateLambdaExp<Taro>();
		var foo2 = CreateLambdaExp<Hanako>();

		var foo_instance = foo();
		foo_instance.Study();
		var foo2_instance = foo2();
		foo2_instance.Jump();
	}

	private Func<T> CreateLambdaExp<T>() where T : Person, new()
	{
		return ( () => new T() );
	}
}

こんな感じでしょうか?
でもコンストラクタに引数渡せないぜ・・・。 (まあInitializeメソッドでも用意しておけば...