OR
这可能是一个简单而简单的问题,但我仍然对决定使用bitwise 的原因有些困惑。假设我有一个A
包含四个字段的类:
class A
{
private int Field1;
private static int Field2;
public int Field3;
public static int Field4;
}
并用于Reflection
获取字段:
var fields = typeof (A).GetFields(BindingFlags.Public | BindingFlags.Static);
如果您是新手Reflection
并且不知道如何使用BindingFlags
,那么您脑海中的初始逻辑思维将是:
此行将选择所有静态 OR 公共字段,因为使用了按位 OR。以及您认为的预期结果:
Field2
Field3
Field4
但是当按下 F5 时,结果将完全不同,按位OR
工作为AND
:
Field4
为什么不使用可能遵循逻辑思维的按位 AND 运算符。像这样:
var fields = typeof (A).GetFields(BindingFlags.Public & BindingFlags.Static);
我在MSDN中找到的话:
在某些情况下,用于组合标志的按位或运算可能被认为是一个高级概念,简单任务不需要。
请任何人都可以在这里以简单的方式解释高级概念以便理解吗?