1 つまたは複数の true/false 状態にある可能性のあるオブジェクトがある場合、プログラマーが複数のブール値を使用するだけでなく、フラグとビットマスクを頻繁に使用する理由について、私は常に少し曖昧でした。
それは .NET フレームワーク全体にあります。これが最良の例かどうかはわかりませんが、.NET フレームワークには次のものがあります。
public enum AnchorStyles
{
None = 0,
Top = 1,
Bottom = 2,
Left = 4,
Right = 8
}
したがって、アンカー スタイルが与えられた場合、ビットマスクを使用して、どの状態が選択されているかを把握できます。ただし、可能な値ごとに定義された bool プロパティ、または個々の列挙値の配列を持つ AnchorStyle クラス/構造体を使用して、同じことを達成できるようです。
もちろん、私の質問の主な理由は、自分のコードで同様の慣行に従うべきかどうか疑問に思っているからです。
では、なぜこのアプローチを使用するのでしょうか。
- メモリ消費が少ない?(ブールの配列/構造体よりも消費量が少ないようには見えません)
- 構造体や配列よりも優れたスタック/ヒープ パフォーマンス?
- 比較操作の高速化 価値の付加/除去の高速化?
- それを書いた開発者にとってより便利ですか?