可以防止非位掩码字段上的意外按位运算符?

Joe*_* P. 5 c# enums bit-manipulation bitmask

在C#中,建议您将[Flags]属性添加到位掩码枚举中,如下所示:

[Flags]
public enum Condiments
{
    None = 0,
    Ketchup = 1,
    Mustard = 2,
    Mayo = 4,
    Pickle = 8,
    AllTheWay = 15
}
Run Code Online (Sandbox Code Playgroud)

我发现我的代码错误地在枚举上执行按位运算,而没有[Flags]完全不是位掩码的属性(First = 1,Second = 2,Third = 3等).这当然在逻辑上是错误的,但编译器完全可以接受.

我想知道是否有任何方法可以利用该[Flags]属性或其他方法将其转换为编译时错误/警告.我不知道从哪里开始,但它似乎应该是可行的,所以任何帮助将不胜感激.

Tig*_*ran 1

我建议进行此“自定义”检查,其中编译器无法找出问题,请使用http://research.microsoft.com/en-us/projects/contracts/。代码合同,如果可以的话。