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 に答える