我正在处理很多如下所示的代码:
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/