我在做

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/

10-12 14:22