我在做
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)
我认为这是可以接受的,因为它是相当普遍的.在这种情况下,它看起来真的可能意味着"=="而不是"=".