Aşağıdaki kodu (örnek) var ve ben gerçekten 'eğer' bu kadar çok çekleri ile rahat değilim:Bitsel bayraklar ve Anahtar ifadesi?
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);
i bir 'anahtar' deyimi kullanabileceği bazı yolu var mı. Belki onları dizilere dönüştürürsem ya da diziler kullanırsam?
A 'switch' ifadesi ne istediğinizi değil, çünkü eğer bir sürü gruba eşdeğerse… eğer… else…… ifadeleri, açıkça sahip olduğunuz şey değil. – Gabe
Not: C# 4.0'da 'flag.HasFlag (Flags.p1)' yerine 'flag & flags.p1 == Flags.p1' 'yi kullanabilirsiniz. – Gabe
@Gabe: hivemind! –