Clearing Enum Flags
UPDATE: It looks like I am confusing a lot of people with this article. I wanted to write an article about something else than the title suggests (how flags enum are built) but I did not explain it well and what’s more important I forgot to mention the most important thing: how to simply clear a flag. I apologize for the confusion and here is the simple way of just clearing a flag:
[Flags]
public enum Foos {
A = 1,
B = 2,
C = 4,
D = 8,
AB = A | B,
CD = C | D,
All = AB | CD
}
static class Program {
static void Main() {
Foos value = Foos.AB;
Console.WriteLine(ClearFlag(value,Foos.A);
}
public static Foos ClearFlag(Foos value, Foos flag) {
return value & ~flag;
}
}
… I will try to write the other article some other time :-)
Comments
- Anonymous
August 29, 2006
Maybe there are side-effects, but the easiest C# version is:
public static Foos ClearFlag( Foos value, Foos flag )
{
value &= ~flag;
return value;
} - Anonymous
August 29, 2006
Clearing Enum Flags Via Krzysztof Cwalina - Somebodyjust pointed out to me that the enum guidelines don’t - Anonymous
August 29, 2006
This is the first time I've seen someone xor the enum instead of and-not it, like Thomas shows.
Why is this better? - Anonymous
February 12, 2007
為什麼推薦 ? Krzysztof Cwalina 是 .NET Framework API Design Team 的 Program Manager, 他也寫了 一本 Framework Design