[英]Getter/Setter problem in C#
我在做
static bool isWorking
{
get { return _isWorking; }
set {
myform.treeView1.Enabled = !value;
_isWorking = value;
}
}
并且单步调试器显示它在第一行停止。 在尝试这条线之后
set { myform.treeView1.Enabled = !(_isWorking = value); }
我看到 isWorking 已设置,但 myform.treeView1.Enabled 未设置。 这是怎么回事?
“调试器显示它停止”是什么意思? myform
是否可能是 null,或者myform.treeView1
是 null?
在这种情况下,我不记得确切的评估顺序,但它可以解释您所描述的症状。 不过,了解调试器“停止”的原因至关重要。 另一种可能性是您尝试从非 UI 线程访问 UI,这将阻止分配给Enabled
的工作正常工作。
哦,请不要使用您的第二个版本 - 作为副作用,分配是非常非常罕见的好主意。 我知道的唯一惯用用法是使用 IO 循环时:
string line;
while ( (line = reader.ReadLine()) != null)
我只认为这是可以接受的,因为它相当普遍。 在这种情况下,看起来您的意思是“==”而不是“=”。
因为 (_isWorking = value) 总是返回 true。 如果你要写:
myform.treeView1.Enabled = !(_isWorking == value);
它的工作原理如下:如果 isWorking 等于值,则禁用 treeView。 但在你的情况下 - 不
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.