Mam następujący kod (przykład), a ja naprawdę nie wygodne z tylu „czy” kontroli:Bitowe flagi i instrukcja Switch?
public enum Flags
{
p1 = 0x01, // 0001
p2 = 0x02, // 0010
p3 = 0x04, // 0100
p4 = 0x08 // 1000
};
public static void MyMethod (Flags flag)
{
if ((flag & Flags.p1) == Flags.p1)
DoSomething();
if ((flag & Flags.p2) == Flags.p2)
DosomethingElse();
if ((flag & Flags.p3) == Flags.p3)
DosomethingElseAgain();
if ((flag & Flags.p4) == Flags.p4)
DosomethingElseAgainAndAgain();
}
MyMethod(Flags.p1 | Flags.p3);
Czy jest jakiś sposób, że mogę użyć „switch” oświadczenie. Może jeśli skonwertuję je na łańcuchy lub używam tablic?
Wyrażenie 'switch' nie jest tym, czego potrzebujesz, ponieważ jest równoważne całemu pakietowi instrukcji' if ... else if ... else if ... ', co oczywiście nie jest tym, co masz. – Gabe
Zauważ, że w C# 4.0 możesz użyć 'flag.HasFlag (Flags.p1)' zamiast 'flag & Flags.p1 == Flags.p1' – Gabe
@Gabe: hivemind! –