C#——标志枚举示例学习

using System;
using System.Collections.Generic;
using System.Text;


namespace Csharp_标志枚举
{
    /// <summary>
    /// @author ZJC
    /// 1.普通枚举每个值是互斥的
    /// 2.其实,每个枚举值默认是一个int值,而且默认从0开始,依次从赋值出向下+1,可以自己手动赋值,
    /// 3.枚举值默认为int型,可以自己修改,但注意,char型不允许
    /// 4.标志枚举,值可以组合,通过给枚举值赋值,然后通过或运算就可以实现值的组合,赋值才有效果,而且不能乱赋值,否则计算出错得不到正确结果
    /// </summary>
    public enum Person:byte
    { 
        高 = 100,
        富,      //101
        帅,      //102
        白 = 200,        
        美,      //201,从被修改处开始,依次加1
    }
    [Flags]
    enum Perso2
    {
        高 = 1,
        富 = 2,
        帅 = 4,
        白 = 8,
        美 = 16,
    }
    class Program
    {
        static void Main(string[] args)
        {
            Person a = Person.白;
            Console.WriteLine(a);
            Console.WriteLine(a.GetHashCode());
            a = Person.美;
            Console.WriteLine(a);
            Console.WriteLine(a.GetHashCode());
            Perso2 b = Perso2.富 | Perso2.白 | Perso2.美;
            Console.WriteLine(b);
            Console.WriteLine(b.GetHashCode());
            //验证是否具有某些特性
            if ((b & Perso2.富 | Perso2.白 | Perso2.美) == (Perso2.白 | Perso2.富 | Perso2.美))
            {
                Console.WriteLine("的确是白富美女神!");
            }
            else
            {
                Console.WriteLine("no");
            }
        }
    }
}

运行结果:

C#——标志枚举示例学习_第1张图片

你可能感兴趣的:(枚举,C#,标志枚举)