如何使[Flags]枚举和切换大小写一起工作?非常希望使它看起来简单。多次问过类似问题,但从未直接向[标志]枚举问过。
如果设置了M1,则执行操作1,
如果设置了M2,则执行operation2,
如果同时将M1和M2设置为执行操作1和2。
private bool isNeutralLanguage(string entry)
{
bool neutral = true;
var match = dict.FirstOrDefault(stringToCheck => stringToCheck.Contains(entry.ToLower()));
if (match != null && match.Any())
neutral = false;
return neutral;
}
我也很确定很多人都想知道如何使其工作。要求修复C#?
答案 0 :(得分:3)
这将对任何设置的位执行
例如
ExecuteOnFlagValue(TST.M1 | TST.M3); //1+2= 3
将对位1和3执行代码
public void ExecuteOnFlagValue(TST value) {
if (value & TST.M1 == TST.M1) {
//Do work if bit 1
}
if (value & TST.M2 == TST.M2) {
//Do work if bit 2
}
if (value & TST.M3 == TST.M3) {
//Do work if bit 3
}
}
答案 1 :(得分:0)
您无法在c#中使用switch
来执行此操作,因为一旦执行了一种情况,就不会再执行其他情况。
您可以认为switch
语句是编写if... else if... else...
构造的一种较短方法-每个case
是if
,而default
是最后的{ {1}}:
这意味着以下else
语句:
switch
等效于以下switch( t1)
{
case TST.M1:
//Do work if Bit 1 set
break;
case TST.M2:
//Do work if Bit 2 set
break;
case TST.M3:
//Do work if Bit 3 set
break;
default:
//nothing set;
break;
}
构造:
if...else if... else