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]
これをコンパイル時のエラー/警告に変えるために、属性または他のアプローチを活用する方法があるかどうか疑問に思っています。どこから始めればよいかわかりませんが、実行可能であるように思われるので、助けていただければ幸いです。