我在做
static bool isWorking
{
get { return _isWorking; }
set {
myform.treeView1.Enabled = !value;
_isWorking = value;
}
}
逐步调试器显示它停止在第一行。
尝试此行后
set { myform.treeView1.Enabled = !(_isWorking = value); }
我看到设置了isWorking,但是没有设置myform.treeView1.Enabled。这是怎么回事?
最佳答案
“调试器显示它停止了”是什么意思? myform
是否为空,或者myform.treeView1
是否为空?
在这种情况下,我不记得确切的评估顺序,但是它可以解释您所描述的症状。不过,了解调试器为何“停止”至关重要。另一种可能性是,您试图从非UI线程访问UI,这将导致对Enabled
的分配无法正常工作。
哦,请不要使用第二个版本-作为副作用,分配是一个非常好的主意。我知道的唯一惯用法是使用IO循环时:
string line;
while ( (line = reader.ReadLine()) != null)
我只认为这是可以接受的,因为它相当普遍。在这种情况下,实际上看起来您的意思是“ ==”而不是“ =“。
关于c# - C#中的Getter/Setter问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/708866/