In not-so-new news, I just found out about .NET 4’s Enum.HasFlag method. This nice little method makes life with flags a little bit cleaner since you can use it instead of performing a bitwise AND and compare.
[Flags]
enum Options
{
None = 0,
A = 1,
B = 2,
C = 4
}
void Main()
{
var options = Options.A | Options.C;
// old (bitwise AND and compare)
Console.WriteLine("A:{0}", (options & Options.A) == Options.A);
Console.WriteLine("B:{0}", (options & Options.B) == Options.B);
Console.WriteLine("C:{0}", (options & Options.C) == Options.C);
// new (HasFlag method)
Console.WriteLine("A:{0}", options.HasFlag(Options.A));
Console.WriteLine("B:{0}", options.HasFlag(Options.B));
Console.WriteLine("C:{0}", options.HasFlag(Options.C));
}
/* Output:
A:True
B:False
C:True
A:True
B:False
C:True
*/