2

私がやっている

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

デバッガーをステップ実行すると、最初の設定行で停止することが示されます。代わりにこの行を試した後

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

isWorking は設定されていますが、myform.treeView1.Enabled は設定されていません。どうしたの?

4

2 に答える 2

9

「デバッガーが停止したことを示す」とはどういう意味ですか? それはおそらくnullですかmyform、それともmyform.treeView1nullですか?

この場合の正確な評価順序は思い出せませんが、あなたが説明している症状を説明できる可能性があります。ただし、デバッガーが「停止」する理由を知ることは非常に重要です。別の可能性として、UI 以外のスレッドから UI にアクセスしようとしていることが考えられます。これにより、への割り当てがEnabled適切に機能しなくなります。

ああ、あなたの 2 番目のバージョンを使用しないでください。私が知っている唯一の慣用的な使用法は、IO でループする場合です。

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

それは合理的に一般的であるため、私はそれを許容できると考えています. この場合、「=」の代わりに「==」を意味ているように見えます。

于 2009-04-02T08:57:35.713 に答える
-2

(_isWorking = value) は常に true を返すためです。あなたが書くなら:

myform.treeView1.Enabled = !(_isWorking == value);

次のように動作します: isWorking が値と等しい場合、treeView を無効にします。しかし、あなたの場合 - いいえ

于 2009-04-02T08:59:05.833 に答える