【发布时间】:2012-10-08 02:13:21
【问题描述】:
var a = "test";
var @delegate = () => a;
Assert.AreEqual(@delegate(),"test"); //true
a = "12345678"
Assert.AreEqual(@delegate(),"test"); //still true, due to closure.
但是,如果变量 a 是类级别的属性,那么第二个断言会返回什么 - 真还是假?
例如,如果 a 是
string _a;
string a {get {return _a;} set{_a = value;}}
如果 a 是方法而不是属性,我知道第二个断言将是错误的。
【问题讨论】:
-
那么问题是什么?
-
问题是,这对财产有什么不同吗?我知道如果我用函数调用 'a()' 替换 'a' 我不会得到缓存效果。它与属性的工作方式相同吗?
-
@Alwyn 是的,看看我的回答 - 属性获取是一个方法调用。
-
只是好奇,你为什么不自己尝试一下?