当前位置:  开发笔记 > 编程语言 > 正文

C#中的Getter/Setter问题

如何解决《C#中的Getter/Setter问题》经验,为你挑选了1个好方法。

我在做

static bool isWorking
    {
        get { return _isWorking; }
        set {
            myform.treeView1.Enabled = !value;
            _isWorking = value;
        }
    }

并单步执行调试器显示它在第一个设置行停止.之后尝试这一行

set { myform.treeView1.Enabled = !(_isWorking = value); }

我看到isWorking已设置但是myform.treeView1.Enabled不是.这是怎么回事?



1> Jon Skeet..:

"调试器显示停止"是什么意思?可能myform是null,还是myform.treeView1null?

在这种情况下,我不记得确切的评估顺序,但它可以解释您描述的症状.知道为什么调试器"停止"是至关重要的.另一种可能性是您尝试从非UI线程访问UI,这将阻止分配Enabled正常工作.

哦,请不要使用你的第二个版本 - 作为副作用的任务是非常非常好的主意.我所知道的唯一惯用方法是在使用IO循环时:

string line;
while ( (line = reader.ReadLine()) != null)

我认为这是可以接受的,因为它是相当普遍的.在这种情况下,它看起来真的可能意味着"=="而不是"=".

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有