加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 减少位顺序逻辑

发布时间:2020-12-15 17:27:54 所属栏目:百科 来源:网络整理
导读:我有以下代码,我想知道是否有更简洁,减少的方式来编写此代码: (FontStyle是带有Flags属性的.NET Enum) lblPrompt.Font.Style = FontStyle.Regular;if (chkBold.Checked) lblPrompt.Font.Style |= FontStyle.Bold;if (chkItalics.Checked) lblPrompt.Font.St
我有以下代码,我想知道是否有更简洁,减少的方式来编写此代码:

(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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读