Po co używać flag + maski bitów zamiast serii booleanów?

Biorąc pod uwagę przypadek, w którym mam obiekt, który może znajdować się w jednym lub więcej stanach prawda / fałsz, zawsze byłem trochę rozmyty, dlaczego programiści często używają flag + maski bitów zamiast używać kilku wartości logicznych.

To wszystko w ramach .NET. Nie jestem pewien, czy jest to najlepszy przykład, ale środowisko .NET ma następujące cechy:

public enum AnchorStyles
{
    None = 0,
    Top = 1,
    Bottom = 2,
    Left = 4,
    Right = 8
}

Biorąc pod uwagę styl kotwicy, możemy użyć maski bitowej, aby dowiedzieć się, który ze stanów jest wybrany. Wydaje się jednak, że można wykonać to samo z klasą / strukturą AnchorStyle z właściwościami bool zdefiniowanymi dla każdej możliwej wartości lub tablicą indywidualnych wartości wyliczeniowych.

Oczywiście głównym powodem mojego pytania jest to, że zastanawiam się, czy powinienem stosować podobną praktykę z moim własnym kodem.

Po co więc stosować to podejście?

Mniejsze zużycie pamięci? (tak nie jestwydać się tak jakby zużywał mniej niż tablica / struktura booli)Lepsza wydajność stosu / sterty niż struktura lub tablica?Szybsze operacje porównywania? Szybsze dodawanie / usuwanie wartości?Bardziej wygodne dla programisty, który to napisał?

questionAnswers(10)

yourAnswerToTheQuestion