c# - 冗余设置控件属性有任何开销吗?

标签 c# winforms

我正在处理很多如下所示的代码:

 if (btnLeftDock.BackColor != SystemColors.ButtonFace)
 {
    btnLeftDock.BackColor = SystemColors.ButtonFace;
 }
 if (btnRightDock.BackColor != SystemColors.ButtonFace)
 {
    btnRightDock.BackColor = SystemColors.ButtonFace;
 }
 if (btnTopDock.BackColor != SystemColors.ButtonFace)
 {
    btnTopDock.BackColor = SystemColors.ButtonFace;
 }
 if (btnBottomDock.BackColor != SystemColors.ButtonFace)
 {
    btnBottomDock.BackColor = SystemColors.ButtonFace;
 }

我能想象这样做的唯一原因是,理论上设置控件颜色会产生一些特定于 winforms 的开销,如下所示:

 btnLeftDock.BackColor = SystemColors.ButtonFace;
 btnRightDock.BackColor = SystemColors.ButtonFace;
 btnTopDock.BackColor = SystemColors.ButtonFace;
 btnBottomDock.BackColor = SystemColors.ButtonFace;

我认为它更容易阅读,而且我看不出任何性能差异,但原始开发人员必须有一些理由。 (对吗?)

最佳答案

BackColor 属性有一些特殊之处,它是一个环境属性。这意味着,如果该属性从未分配,则控件的 BackColor 将与父级的 BackColor 值相同。

这是非常理想的,它提供自动一致的背景颜色值。如果父控件更改其 BackColor,则所有子控件也会将其更改为相同的值。只要他们自己从未分配过即可。

这可能让原作者有点瘫痪。但由于他使用了系统颜色,因此测试应该没有必要。我想。

关于c# - 冗余设置控件属性有任何开销吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3613242/

相关文章:

c# - 有没有办法只对公共(public)方法/属性有 StyleCop 文档要求 SA1600?

c# - 如何在 Windows 应用程序中处理 Ctrl + Break 或 Ctrl + Pause

c# - 负载测试期间出现 FabricTransientException "Could not ping any of the provided Service Fabric gateway endpoints."

c# - WinForm和uwp如何双向通信

c# - 将控制台窗口的输出获取到 Winform 应用程序

C# dynamic关键字的实用用法

c# - 如何在自定义 Xamarin.Forms ViewCell 的行之间添加分隔符?

c# - CrystalReport 和/或 Visual studio 2010 的情况很奇怪我不知道 .Net Framework

.net - 可用文化列表

winforms - .Net 2.0 Winform 标签工具提示