私は次のコードを持っています、そして私はこのコードを書くためのより簡潔で縮小された方法があるかどうか疑問に思っています:
(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型を使用したアンパサンドの直接適用を好まないため、これは機能しません。