Why is this if statement failing?

Posted by Rawling on Stack Overflow See other posts from Stack Overflow or by Rawling
Published on 2010-04-16T15:15:32Z Indexed on 2010/04/16 15:33 UTC
Read the original article Hit count: 299

Filed under:
|
|
|

I'm working on an existing class that is two steps derived from System.Windows.Forms.Combo box.

The class overrides the Text property thus:

    public override string Text
    {
        get
        {
            return this.AccessibilityObject.Value;
        }
        set
        {
            if (base.Text != value)
            {
                base.Text = value;
            }
        }
    }

The reason given for that "get" is this MS bug: http://support.microsoft.com/kb/814346

However, I'm more interested in the fact that the "if" doesn't work.

There are times where "base.Text != value" is true and yet pressing F10 steps straight to the closing } of the "set" and the Text property is not changed.

I've seen this both by just checking values in the debugger, and putting a conditional breakpoint on that only breaks when the "if" statement's predicate is true.

How on earth can "if" go wrong?

The class between this and ComboBox doesn't touch the Text property. The bug above shouldn't really be affecting anything - it says it's fixed in VS2005. Is the debugger showing different values than the program itself sees?

© Stack Overflow or respective owner

Related posts about c#

Related posts about combobox