我设置了一个简单的程序,只是为了测试get访问器中的代码是如何执行的(因为我在另一个项目中遇到了一些问题),并发现了一些非常奇怪的东西:
class Program {
static void Main(string[] args) {
var test = new TestClass();
var testBool = test.TestBool;
}
}
public class TestClass {
private bool _testBool = true;
public bool TestBool {
get {
if (_testBool) {
Console.WriteLine("true!");
} else {
Console.WriteLine("false! WTF!");
}
_testBool = false;
return _testBool;
}
}
}
我预计输出为
真!
但我得到的却是
真!
假! WTF!
这是怎么回事?
答案 0 :(得分:10)
如果我不得不猜测,我会说调试器运行一次以在IDE中显示局部变量的成员。
如果您在属性中有副作用(您不应该这样做),请不要在IDE中运行它:)
在控制台试试;它应该在那里表现出来。
答案 1 :(得分:8)
没有重复。
不要写有副作用的吸气剂。