我有以下代码,我想知道是否有更简洁,减少的方式来编写此代码:
(FontStyle是带有Flags属性的.NET Enum)
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和所需标志之间的运算符,类似于以下内容:
lblPrompt.Font.Style =
(chkBold.Checked & FontStyle.Bold)
| (chkItalics.Checked & FontStyle.Italic)
| (chkUnderline.Checked & FontStyle.Underline);
这不起作用,因为编译器显然不喜欢我用bool和Flag / Enum类型直接应用&符号.
最佳答案 这些方面的内容怎么样:
lblPrompt.Font.Style |=
(chkBold.Checked ? FontStyle.Bold : 0)
| (chkItalics.Checked ? FontStyle.Italic : 0)
| (chkUnderline.Checked ? FontStyle.Underline : 0);