Por que usar flags + bitmasks em vez de uma série de booleanos?

Dado um caso em que eu tenho um objeto que pode estar em um ou mais estados verdadeiro / falso, eu sempre fui um pouco confuso sobre por que os programadores freqüentemente usam flags + bitmasks ao invés de apenas usar vários valores booleanos.

Está em todo o framework .NET. Não tenho certeza se esse é o melhor exemplo, mas o .NET framework tem o seguinte:

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

Assim, dado um estilo de âncora, podemos usar máscaras de bits para descobrir quais estados são selecionados. No entanto, parece que você poderia realizar a mesma coisa com uma classe / struct AnchorStyle com propriedades de bool definidas para cada valor possível ou uma matriz de valores de enumeração individuais.

É claro que o principal motivo da minha pergunta é que estou me perguntando se devo seguir uma prática semelhante com meu próprio código.

Então, por que usar essa abordagem?

Menos consumo de memória? (isso nãoparece como isso consumiria menos que uma matriz / estrutura de bools)Melhor desempenho de pilha / heap do que uma struct ou array?Mais rápido comparar operações? Adição / remoção de valor mais rápido?Mais conveniente para o desenvolvedor que a escreveu?

questionAnswers(10)

yourAnswerToTheQuestion