पर विचार करें मैं इस विस्तार विधि है:जांच एक enum में किसी भी झंडे है अगर आम
public static bool HasAnyFlagInCommon(this System.Enum type, Enum value)
{
var flags = value.ToString().Split(new string[] { ", " },
StringSplitOptions.None);
foreach (var flag in flags)
{
if (type.ToString() == flag)
return true;
}
return false;
}
और निम्न स्थिति:
[Flags]
enum Bla
{
A = 0,
B = 1,
C = 2,
D = 4
}
Bla foo = Bla.A | Bla.B;
Bla bar = Bla.A;
bar.HasAnyFlagInCommon(foo); //returns true
मैं अगर foo के साथ आम में किसी भी झंडे है जाँच करना चाहते हैं बार, लेकिन विस्तार विधि में इस व्यवहार को प्राप्त करने का एक बेहतर तरीका होना चाहिए। (संभावना के लिए खाते
public static bool HasAnyFlagInCommon(this System.Enum type, Enum value)
{
var flags = Enum.GetValues(value.GetType()).Cast<Enum>()
.Where(item => value.HasFlag(item));
foreach (var flag in flags)
{
if (type == flag)
return true;
}
return false;
}
धन्यवाद, बहुत अच्छा! – Erpel