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

c# – 从.All中逐位减法

发布时间:2020-12-16 01:27:50 所属栏目:百科 来源:网络整理
导读:我有以下代码,我想知道是否有办法在最后一节(仅复制文件)中编写按位运算符,以包括将其设置为All值,然后在一行中删除其他两个. private void cbInstallType_SelectedIndexChanged(object sender,EventArgs e) { if (cbInstallType.Text == "Full Install") {
我有以下代码,我想知道是否有办法在最后一节(仅复制文件)中编写按位运算符,以包括将其设置为All值,然后在一行中删除其他两个.

private void cbInstallType_SelectedIndexChanged(object sender,EventArgs e)
    {
        if (cbInstallType.Text == "Full Install")
        {
            eventFlags = GBFEvents.All;
        }

        else if (cbInstallType.Text == "DB Only")
        {
            eventFlags = (GBFEvents.InitGBFSQL | GBFEvents.PerformDatabaseUpdate);
        }

        else if (cbInstallType.Text == "Copy Files Only")
        {
            eventFlags = GBFEvents.All;
            eventFlags &= ~(GBFEvents.InitGBFSQL | GBFEvents.PerformDatabaseUpdate);
        }
    }

因此定义了GBFEvents:

public enum GBFEvents
{
    NONE                        =       0,InitGBFSQL                  =       1 << 0,ServiceIISControlDown       =       1 << 1,SetWebConfigValues          =       1 << 2,ReadFilelists               =       1 << 3,CopyFiles                   =       1 << 4,FixWebConfigValues          =       1 << 5,BuildAppPaths               =       1 << 6,PerformDatabaseUpdate       =       1 << 7,ServiceIISControlUp         =       1 << 8,All                         =    ~(-1 << 9)
}

解决方法

将其更改为单行是一个非常简单的例子,只是扩展了所做的事情.所以一步一步走:

var eventFlags = GBFEvents.All;
eventFlags &= ~(GBFEvents.InitGBFSQL | GBFEvents.PerformDatabaseUpdate);

如果我们扩展& =我们得到:

var eventFlags = GBFEvents.All;
eventFlags = eventFlags & ~(GBFEvents.InitGBFSQL | GBFEvents.PerformDatabaseUpdate);

如果我们在第二行中内联使用eventFlags,我们得到:

var eventFlags = GBFEvents.All & ~(GBFEvents.InitGBFSQL | GBFEvents.PerformDatabaseUpdate);

(编辑:李大同)

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

    推荐文章
      热点阅读