var a = "test";
var @delegate = () => a;
Assert.AreEqual(@delegate(),"test"); //true
a = "12345678"
Assert.AreEqual(@delegate(),"test"); //still true, due to closure.
ただし、変数aがクラスレベルのプロパティである場合、2番目のアサーションは何を返しますか?trueまたはfalse?
たとえば、代わりに
string _a;
string a {get {return _a;} set{_a = value;}}
aがプロパティではなくメソッドだった場合、2番目のアサーションがfalseになることはわかっています。