मैं जैसे ही विस्तार विधि बनाया है ..जांच करें कि विशेष रूप से केवल इन झंडे गणन में सेट
public static bool AllFlagsSet<T>(this T input, params T[] values) where T : struct, IConvertible
{
bool allSet = true;
int enumVal = input.ToInt32(null);
foreach (T itm in values)
{
int val = itm.ToInt32(null);
if (!((enumVal & val) == val))
{
allSet = false;
break;
}
}
return allSet;
}
कौन सा प्रयोजनों मैं जरूरत के लिए महान काम करता है, लेकिन मैं अब एक आवश्यकता है के साथ एक विधि बनाने के लिए एक ही हस्ताक्षर जो जांचता है कि केवल उन मूल्यों को ही सेट किया गया है या नहीं।
असल में ऐसा कुछ।
public static bool OnlyTheseFlagsSet<T>(this T input, params T[] values) where T : struct, IConvertible
{
}
एक ही रास्ता मैं यह कर के बारे में सोच सकते हैं सभी उपलब्ध गणन मूल्यों की जांच करने के लिए सेट कर रहे हैं हो रही है और इस बात की पुष्टि है कि केवल दो प्रदान की गई है कर रहा है।
क्या किसी प्रकार का bitwise ऑपरेशन का उपयोग करके इस समस्या को हल करने का कोई और तरीका है?
यह एक होमवर्क है ?? और एक संरचना के लिए टी बाधा क्यों है और एक enum नहीं ?? – LightStriker
लॉल, ठीक है कि यह शर्मनाक है। नहीं, अभी तक बिटवाई ऑपरेशंस की दृढ़ समझ नहीं है ... यह एक वास्तविक आवश्यकता है –
इसे एनम पर बाध्य करने का प्रयास करें और देखें कि क्या होता है। ; -पी –