Tengo una enumeración de la bandera a continuación.¿Cómo comparar las banderas en C#?
[Flags]
public enum FlagTest
{
None = 0x0,
Flag1 = 0x1,
Flag2 = 0x2,
Flag3 = 0x4
}
No puedo hacer que la sentencia if se evalúe como verdadera.
FlagTest testItem = FlagTest.Flag1 | FlagTest.Flag2;
if (testItem == FlagTest.Flag1)
{
// Do something,
// however This is never true.
}
¿Cómo puedo hacer esto cierto?
corrígeme si me equivoco, es apropiada para ser 0 utilizado como valor de la bandera? – Roylee
@Roylee: 0 es aceptable, y es una buena idea tener una bandera "Ninguno" o "Indefinido" para probar que no se han establecido banderas. De ninguna manera es obligatorio, pero es una buena práctica. Lo importante de recordar sobre esto es señalado por Leonid en su respuesta. – Andy
@Roylee En realidad, Microsoft recomienda que proporcione un indicador de "Ninguno" con un valor de cero. Consulte http://msdn.microsoft.com/en-us/library/vstudio/ms229058(v=vs.100).aspx – ThatMatthew