2008-10-15 5 views

Respuesta

9

Las dos expresiones hacen cosas diferentes (si fooFlag tiene más de un conjunto de bits), por lo cuál es mejor realmente depende de la comportamiento que desea:

fooFlag == (this.Foo & fooFlag) // result is true iff all bits in fooFlag are set 


(this.Foo & fooFlag) != 0  // result is true if any bits in fooFlag are set 
+0

¡Gracias! Supongo que solo lo estaba mirando de una manera. es decir, "¿Está mi bit establecido?", ¡supongo que podría ser útil saber si también se ha configurado "Any" bit! – Nescio

3

prefiero la primera porque es más legible.

1

Prefiero el primero. Uso! = 0 con moderación en expresiones booleanas.

6
bool CheckFlag(FooFlag fooFlag) 
{ 
    return fooFlag == (this.Foo & fooFlag); 
} 
2
bool CheckFlag(FooFlag fooFlag) 
{ 
    return (this.Foo & fooFlag) != 0; 
} 
-2

Soy un pensador positivo:

bool CheckFlag(FooFlag fooFlag) 
{ 
    return this.Foo & fooFlag == 1; 
} 
+1

¿Qué pasa si el valor de FooFlag es 2? –

+0

Dijo que es un pensador positivo :) – leppie

+0

Me corrigen - pensar antes de escribir es útil;) –

Cuestiones relacionadas