c# – 如果文本没有改变,是否会触发TextChanged事件?

前端之家收集整理的这篇文章主要介绍了c# – 如果文本没有改变,是否会触发TextChanged事件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在为从其他来源购买的客户端定制(和修复)大型应用程序.我们最终得到的代码肯定不是源客户端生产中使用的实际代码.话虽如此,我今天碰到了这个:
if (lblCurrentValueOfContractAmount.Text == "0.0")
   lblCurrentValueOfContractAmount.Text = "0.0";

不,我不是在开玩笑.我的第一个倾向是删除它,然后我开始与另一位开发人员交谈,他提到可能会有一些秘密的东西在这里发生,就像有人订阅标签的文本被更改等等.老实说,我不是那么担心它所以我只想把它留进去.不过,这让我想到了一个问题:

例如,我们假设有人订阅了TextChanged.如果文本实际上没有改变,那么编译器会优化整个语句吗?活动会真的开火吗?

解决方法

假设您有一个Winforms标签(或其他Control派生类),代码将不会触发更改事件,因此该代码没有副作用,可以删除. http://referencesource.microsoft.com/#System.Windows.Forms/winforms/Managed/System/WinForms/Control.cs,9884211b7ff61817
public virtual string Text {
        get { ... }

        set {
            if (value == null) {
                value = "";
            }

            if (value == Text) {
                return;
            }
            // omitted remainder
        }
    }

猜你在找的C#相关文章