C#自学笔记之枚举

枚举基本概念

  • 枚举和结构体一样都是值类型
  • 枚举只有一种类型成员变量:命名的整数值常量(默认为int类型)
  • 每个枚举成员都被赋予成一个底层类型的值常量
  • 默认情况下,第一个成员赋值为0,往后的成员值依次+1(初始化过程中,下一个值未赋值,默认情况它的值为上一个值加1)
  • 不同成员值可以相同

默认情况下,第一个成员赋值为0,往后的成员值依次+1(初始化过程中,下一个值未赋值,默认情况它的值为上一个值加1)

    enum Show:int
    {
        a,
        b,
        c = 10,
        d,
        e = a
    }

    class Program
    {
        static void Main(string[] args)
        {
            Show s1 = Show.a;
            Show s2 = Show.b;
            Show s3 = Show.c;
            Show s4 = Show.d;
            Show s5 = Show.e;
 
            Console.WriteLine("{0},\t{1}", s1, (int)s1);
            Console.WriteLine("{0},\t{1}", s2, (int)s2);
            Console.WriteLine("{0},\t{1}", s3, (int)s3);
            Console.WriteLine("{0},\t{1}", s4, (int)s4);
            Console.WriteLine("{0},\t{1}", s5, (int)s5);

            Console.ReadKey();
        }
    }

运行结果:

a,      0
b,      1
c,      10
d,      11
a,      0

标志

  • 如果在 flag 中设置的位域也在当前实例中进行了设置,则为 true;否则为 false。
    有兴趣的话,直接看代码吧。
    enum CardDeckSettings : uint
    {
        SingleDeck = 0x01,      //位0
        LargePictures = 0x02,   //位1
        FancyNumbers = 0x04,    //位2
        Animation = 0x08        //位3
    }
    class MyClass
    {
        bool UseSingleDeck= false,
            UseBigPics= false,
            UseFancyNumbers= false,
            UseAnimation= false,
            UseAnimationAndFancyNumbers = false;
        public void SetOptions(CardDeckSettings ops)
        {
            UseSingleDeck = ops.HasFlag(CardDeckSettings.SingleDeck);
            UseBigPics = ops.HasFlag(CardDeckSettings.LargePictures);
            UseFancyNumbers = ops.HasFlag(CardDeckSettings.FancyNumbers);
            UseAnimation = ops.HasFlag(CardDeckSettings.Animation);
            CardDeckSettings testFlags = CardDeckSettings.Animation | CardDeckSettings.FancyNumbers;
            UseAnimationAndFancyNumbers = ops.HasFlag(testFlags);
        }
        public void PrintOptions() {
            Console.WriteLine("Option settings:");
            Console.WriteLine("Use Single Deck - {0}", UseSingleDeck );
            Console.WriteLine("Use Large Picture - {0}", UseBigPics );
            Console.WriteLine("Use Fancy Number - {0}", UseFancyNumbers ) ;
            Console.WriteLine("Show Animation - {0}", UseAnimation );
            Console.WriteLine("Show Animation and FancyNumbers - {0}",UseAnimationAndFancyNumbers);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            CardDeckSettings ops;

            ops = CardDeckSettings.FancyNumbers;
            Console.WriteLine(ops.ToString()+"    值:{0}",(int)ops);

            ops = CardDeckSettings.FancyNumbers | CardDeckSettings.SingleDeck;//逻辑运算
            Console.WriteLine(ops.ToString()+"\n");

            MyClass myClass = new MyClass();

            myClass.SetOptions(ops);
            myClass.PrintOptions();

            Console.ReadKey();
        }
    }

运行结果:

FancyNumbers    值:4
5

Option settings:
Use Single Deck - True
Use Large Picture - False
Use Fancy Number - True
Show Animation - False
Show Animation and FancyNumbers - False
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值