Flags enumeration sample

Published 04-04-2006 5:42 PM
I had to wrestle a bit to get an enumeration with the FlagsAttribute working correctly today so I though I'd just share my working code as a sample for some Google juice. If you want to download the code, you can do so here. Hope this helps.


    7     [Flags]

    8     public enum HtmlParserOptions

    9     {

   10         NotifyOpeningTags = 1,

   11         NotifyClosingTags = 2,

   12         NotifyText = 4,

   13         NotifyEmptyText = 8,

   14         NotifyComments = 16,

   15         All = NotifyOpeningTags | NotifyClosingTags | NotifyText | NotifyEmptyText | NotifyComments

   16     }

   17 

   18     class Program

   19     {

   20         HtmlParserOptions options = HtmlParserOptions.NotifyText;

   21 

   22         static void Main(string[] args)

   23         {

   24             Program p = new Program();

   25             p.Run();

   26 

   27             Console.WriteLine("Press ENTER to exit");

   28             Console.ReadLine();

   29         }

   30 

   31         public void Run()

   32         {

   33             Console.WriteLine(IsOptionSet(HtmlParserOptions.NotifyOpeningTags));

   34             Console.WriteLine(IsOptionSet(HtmlParserOptions.NotifyClosingTags));

   35             Console.WriteLine(IsOptionSet(HtmlParserOptions.NotifyText));

   36             Console.WriteLine(IsOptionSet(HtmlParserOptions.NotifyEmptyText));

   37             Console.WriteLine(IsOptionSet(HtmlParserOptions.NotifyComments));

   38             Console.WriteLine(IsOptionSet(HtmlParserOptions.All));

   39         }

   40 

   41         private bool IsOptionSet(HtmlParserOptions singleOption)

   42         {

   43             return (options & singleOption) == singleOption;

   44         }

   45     }

Comments

# Ramon Smits said on Tuesday, April 04, 2006 11:03 AM

lots of days that I miss the c++ syntax to just do if(options&singleOption) { ..... }

:)

By the way.. Its better to renamen IsOptionSet to IsSet(..) and rename singleOption to value because it doesn't really has to be a single option. It can also be some OR'd options.

Just my 2 cents.

Leave a Comment

(required) 
(required) 
(optional)
(required)