Tôi có đoạn code sau (chẳng hạn), và tôi thực sự không thoải mái với 'nếu' rất nhiều kiểm tra:Cờ bitwise và câu lệnh Chuyển đổi?
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);
Có một số cách, mà tôi có thể sử dụng một tuyên bố 'chuyển đổi'. Có lẽ nếu tôi chuyển đổi chúng thành chuỗi, hoặc sử dụng mảng?
Câu lệnh 'switch' không phải là những gì bạn muốn vì nó tương đương với toàn bộ các câu lệnh' if ... else if ... else if ... ', rõ ràng không phải là những gì bạn có. – Gabe
Lưu ý rằng trong C# 4.0 bạn có thể sử dụng 'flag.HasFlag (Flags.p1)' thay vì 'flag & Flags.p1 == Flags.p1' – Gabe
@Gabe: hivemind! –