5

在 C# 中,建议您将 [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]属性或其他方法将其转变为编译时错误/警告。我不知道从哪里开始,但它似乎应该是可行的,所以任何帮助将不胜感激。

4

1 回答 1

1

我建议使用http://research.microsoft.com/en-us/projects/contracts/进行这种“自定义”检查,编译器无法找出问题。CodeContracts,如果可以的话。

于 2011-09-28T18:13:46.587 回答