在C#中你要recommended将[Flags]属性添加到位掩码枚举中,如下所示:
[Flags]
public enum Condiments
{
None = 0,
Ketchup = 1,
Mustard = 2,
Mayo = 4,
Pickle = 8,
AllTheWay = 15
}
我发现我的代码错误地在枚举上执行按位运算,而没有[Flags]
属性根本不是位掩码(First = 1,Second = 2,Third = 3等)。这当然在逻辑上是错误的,但编译器完全可以接受。
我想知道是否有任何方法可以利用[Flags]
属性或其他方法将其转换为编译时错误/警告。我不知道从哪里开始,但似乎它应该是可行的,所以任何帮助都会受到赞赏。
答案 0 :(得分:1)
我建议进行这种“自定义”检查,编译器无法使用http://research.microsoft.com/en-us/projects/contracts/找出问题。 CodeContracts,如果可以的话。