zoukankan      html  css  js  c++  java
  • C#枚举位运算

    Enumeration Types as Bit Flags

    You can use an enumeration type to define bit flags, which enables an instance of the enumeration type to store any combination of the values that are defined in the enumerator list. (Of course, some combinations may not be meaningful or allowed in your program code.)

    You create a bit flags enum by applying the System.FlagsAttribute attribute and defining the values appropriately so that AND, OR, NOT and XOR bitwise operations can be performed on them. In a bit flags enum, include a named constant with a value of zero that means "no flags are set." Do not give a flag a value of zero if it does not mean "no flags are set".

    In the following example, another version of the Days enum, which is named Days2, is defined. Days2 has the Flags attribute and each value is assigned the next greater power of 2. This enables you to create a Days2 variable whose value is Days2.Tuesday and Days2.Thursday.

        [Flags]
        enum Days2
        {
            None = 0x0,
            Sunday = 0x1,
            Monday = 0x2,
            Tuesday = 0x4,
            Wednesday = 0x8,
            Thursday = 0x10,
            Friday = 0x20,
            Saturday = 0x40
        }
        class MyClass
        {
            Days2 meetingDays = Days2.Tuesday | Days2.Thursday;
        }



    To set a flag on an enum, use the bitwise OR operator as shown in the following example:

    // Initialize with two flags using bitwise OR.
    meetingDays = Days2.Tuesday | Days2.Thursday;

    // Set an additional flag using bitwise OR.
    meetingDays = meetingDays | Days2.Friday;

    Console.WriteLine("Meeting days are {0}", meetingDays);
    // Output: Meeting days are Tuesday, Thursday, Friday

    // Remove a flag using bitwise XOR.
    meetingDays = meetingDays ^ Days2.Tuesday;
    Console.WriteLine("Meeting days are {0}", meetingDays);
    // Output: Meeting days are Thursday, Friday


    To determine whether a specific flag is set, use a bitwise AND operation, as shown in the following example:

    // Test value of flags using bitwise AND.
    bool test = (meetingDays & Days2.Thursday) == Days2.Thursday;
    Console.WriteLine("Thursday {0} a meeting day.", test == true ? "is" : "is not");
    // Output: Thursday is a meeting day.
    
    
    

    For more information about what to consider when you define enumeration types with the System.FlagsAttribute attribute, see System.Enum.

    All enums are instances of the System.Enum type. You cannot derive new classes from System.Enum, but you can use its methods to discover information about and manipulate values in an enum instance.

    string s = Enum.GetName(typeof(Days), 4);
    Console.WriteLine(s);
    
    Console.WriteLine("The values of the Days Enum are:");
    foreach (int i in Enum.GetValues(typeof(Days)))
        Console.WriteLine(i);
    
    Console.WriteLine("The names of the Days Enum are:");
    foreach (string str in Enum.GetNames(typeof(Days)))
        Console.WriteLine(str);
    
    
    

    For more information, see System.Enum.

    You can also create a new method for an enum by using an extension method. For more information, see How to: Create a New Method for an Enumeration (C# Programming Guide).

    http://msdn.microsoft.com/en-us/library/cc138362.aspx

  • 相关阅读:
    第十九章:UTC time和local time的互换
    第二十章:安全性
    第十三章:基于socket.io实现即时通信
    第三章:ionic环境搭建之windows篇
    第十八章:自定义splash screen、app icon和tab icon
    第十七章:使用media插件来播放声音
    第一章:hybrid app开发之技术选型
    第十六章:自定义push notification sound
    第十五章:集成JPUSH
    ionic resources
  • 原文地址:https://www.cnblogs.com/Langzi127/p/1970671.html
Copyright © 2011-2022 走看看