मैं निम्नलिखित कोड (उदाहरण) है, और मैं वास्तव में इतने सारे 'अगर चेक के साथ सहज नहीं हूँ:बिटवाई झंडे और स्विच स्टेटमेंट?
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);
वहाँ कोई रास्ता है कि मैं एक' स्विच 'बयान इस्तेमाल कर सकते हैं है,। शायद अगर मैं उन्हें तारों में परिवर्तित करता हूं, या सरणी का उपयोग करता हूं?
एक 'switch' बयान आप क्या चाहते हैं, क्योंकि यह' अगर ... किसी और यदि किसी और ... अगर ... 'बयान है, जो स्पष्ट रूप से नहीं है तुम्हारे पास क्या है की एक पूरी गुच्छा के बराबर है नहीं है। – Gabe
ध्यान दें कि सी # में 4.0 आप के बजाय 'का झंडा और Flags.p1 == Flags.p1' – Gabe
@Gabe' उपयोग कर सकते हैं flag.HasFlag (Flags.p1) ': hivemind! –