我有以下代码,我想知道是否有更简洁、简化的方法来编写此代码:
(FontStyle 是一个带有 Flags 属性的 .NET 枚举)
lblPrompt.Font.Style = FontStyle.Regular;
if (chkBold.Checked)
lblPrompt.Font.Style |= FontStyle.Bold;
if (chkItalics.Checked)
lblPrompt.Font.Style |= FontStyle.Italic;
if (chkUnderline.Checked)
lblPrompt.Font.Style |= FontStyle.Underline;
我觉得答案在于在 CheckBox.Checked 和所需标志之间正确应用 and & 运算符,类似于以下内容:
lblPrompt.Font.Style =
(chkBold.Checked & FontStyle.Bold)
| (chkItalics.Checked & FontStyle.Italic)
| (chkUnderline.Checked & FontStyle.Underline);
然而,这不起作用,因为编译器显然不喜欢我直接应用带有 bool 和 Flag/Enum 类型的 & 符号。