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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |