These links are ordered by their time last-updated -- rightmost is newest.
Show code - CODE/C-sharp/flags.cs

// Scott Sibley

using System;

class FlagsAndBits
{
    [Flags] // FlagsAttribute - Deal with the the enum as a flags list
    public enum MyBits
    {
        // The enum represents binary numbers, so we can turn bits
        // on and off. i.e. if we don't want brave, but we want all
        // other flags, the binary number would be (from right to left)
        // 1110 -- contrived by or'ing the relevant flags
        // ----
        // 0010 -- smart
        // 0100 -- charming
        // 1000 -- happy
        //
        // A test to see if brave exists
        // 1110
        // 0001 (and the numbers, no matches)
        // 0000
        // = Does not exist
        //
        // Test to see if smart exists
        // 1110
        // 0010 (and the numbers, matches)
        // 0010
        // = Exists

        brave =    1, // 2^0
        smart =    2, // 2^1
        charming = 4, // 2^2
        happy =    8  // 2^3
    }
    
    static void Main()
    {
        MyBits bits = MyBits.brave | MyBits.charming; // Set these two bits
 
        // Shows a comma seperated list of flags. The FlagsAttribute causes this 
        // behaviour. Otherwise, the numeric value would be shown instead.
        Console.WriteLine( bits.ToString() ); 
        Console.WriteLine( bits & MyBits.happy ); // Does the happy flag exist?
        Console.WriteLine( bits & MyBits.smart ); // Does the smart flag exist?

        Console.WriteLine();
        // Build a set of flags via a comma seperated list
        MyBits moreBits = (MyBits)Enum.Parse( typeof(MyBits), "charming,happy", true);
        // Show the value of moreBits. It is comma seperated.
        Console.WriteLine( moreBits.ToString() );
        // This FlagsAttribute enum can be cast as an integer. Prints the numeric value.
        Console.WriteLine( (int)moreBits );

    }
}

This web page and related elements are for informative purposes only and thus the use of any of this information is at your risk! In accordance with Title 17 U.S.C. Section 107 and The Berne Convention on Literary and Artistic Works, Article 10, news clippings on this site are made available without profit for research and educational purposes. Any trademarks, trade names, service marks, or service names used on this site are the property of their respective owners.