当前位置 : 主页 > 编程语言 > c语言 >

c# – 从.All中逐位减法

来源:互联网 收集:自由互联 发布时间:2021-06-25
我有以下代码,我想知道是否有办法在最后一节(仅复制文件)中编写按位运算符,以包括将其设置为All值,然后在一行中删除其他两个. private void cbInstallType_SelectedIndexChanged(object sender, Event
我有以下代码,我想知道是否有办法在最后一节(仅复制文件)中编写按位运算符,以包括将其设置为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);
网友评论