У меня есть следующий код, и мне интересно, есть ли более краткий, сокращенный способ написать этот код:
(FontStyle — это .NET Enum с атрибутом Flags)
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;
У меня такое чувство, что ответ заключается в правильном применении оператора and & между CheckBox.Checked и желаемым флагом, подобно следующему:
lblPrompt.Font.Style =
(chkBold.Checked & FontStyle.Bold)
| (chkItalics.Checked & FontStyle.Italic)
| (chkUnderline.Checked & FontStyle.Underline);
Однако это не работает, потому что компилятору явно не нравится мое прямое применение амперсанда с логическим типом и типом Flag/Enum.