按位将两个if连接成一个

Chu*_*age 4 c# enums bit-manipulation

我有这个,

public enum Condition : uint // bitwise
{
    None = 0,
    NewLine = 1,
    Space = 2
}

Rule.Condition someCondition = Rule.Condition.Space | Rule.Condition.NewLine;
Run Code Online (Sandbox Code Playgroud)

我想转换这个,

if ((Rule.Condition.Space & condition) == Rule.Condition.Space) return true;
if ((Rule.Condition.NewLine & condition) == Rule.Condition.NewLine) return true;
Run Code Online (Sandbox Code Playgroud)

进入类似的东西,

if((someCondition & condition) == someCondition) return true;
Run Code Online (Sandbox Code Playgroud)

但它没有用.我忘记了什么?

drh*_*ris 6

好吧,如果您只是想测试一下,那么请检查> 0.但是,如果你正在寻找一个不那么具体的解决方案,那么像这样的东西将两者合并并if完全删除:

return (int)(someCondition & (Condition.Space | Condition.NewLine)) > 0
Run Code Online (Sandbox Code Playgroud)