Wednesday, November 11, 2009

Why do we need [Flags]

Found it quiet not quite:) interesting so here i go
System.FlagsAttribute

[Flags]
enum StateWithFlags
{
None = 0,
Read = 1,
Write = 2,
Delete = 4
}

enum StateWithNoFlags
{
None = 0,
Read = 1,
Write = 2,
Delete = 4
}

for (int enumValue = 0; enumValue <= 8; enumValue++)
Console.WriteLine("StateWithFlags: " + enumValue.ToString() + " " + ((StateWithFlags)enumValue).ToString());
/*
this returns:(2=1 in case of 3 as 3 is not defined similarly for 5=4+1)
StateWithFlags: 0 None
StateWithFlags: 1 Read
StateWithFlags: 2 Write
StateWithFlags: 3 Read, Write
StateWithFlags: 4 Delete
StateWithFlags: 5 Read, Delete
StateWithFlags: 6 Write, Delete
StateWithFlags: 7 Read, Write, Delete
StateWithFlags: 8 8
*/


for (int enumValue = 0; enumValue <= 4; enumValue++)
Console.WriteLine("StateWithNoFlags: " + enumValue.ToString() + " " + ((StateWithNoFlags)enumValue).ToString());
/*
this returns:
0 None
1 Read
2 Write
3 3
4 Delete
*/

Hope this is self explanatory :)