[C#学习]枚举类型

枚举类型是一种创建数值类型的机制,这种类型的可能取值是实现预定的,对于其中每个可能取值都有一个有意义的名称。让编译器理解底层,程序员能理解表层

例如要用0~6来表示一周七天,整数值传达含义不清。

定义枚举必须在标识符前加上关键字enum

Public enum Days
{
	Sunday,
	Monday,
	Tuesday,
	Wednesday,
	Thursday,
	Friday,
	Saturday,
}


引用可以用Days.Sunday  也可以只用Sunday

可以有多个名称对应同一个数值,如让Wednesday=bbala,

编译器默认让第一个枚举对应的数值为0

也可以手动赋值,如果后面的枚举没有赋值,那么就在前面的枚举数值+1

枚举包含的所有值必须是同一种数据类型,这种类型成为底层类型。默认为int,但是也可以使用任何预定义的整数类型


有时候要对枚举进行组合,就要使用位标志枚举,可组合其中的值,用逻辑运算OR创建新的组合值,这里要保证所有的值都是2的幂次

举个例子如Monday=2=0……0010,Tuesday=4=0……0100,按位或为0……0110,相当于存储了周一和周二,相当于每个位代表不同的枚举

在简单枚举中,可以让名称None或最常见的默认名称对应0,但是位标志枚举与此不同,他要求0对应于名称None,这个值意味着所有标志都未设置。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace flags_enumeration
{
    [Flags]
    public enum Week
    {
        Sunday=0x001,
        Monday=0x002,
        Tuesday=0x004,
        Wednesday=0x008,
        Thursday=0x010,
        Friday=0x020,
        Saturday=0x040,
    }
    class Program
    {
        static void Main(string[] args)
        {
            Week MeetingDays = Week.Wednesday | Week.Tuesday | Week.Sunday;
            Console.Write("开会的日期是 : ");
            Console.WriteLine(MeetingDays);
            Console.WriteLine(MeetingDays.HasFlag(Week.Friday));
        }
    }
}



控制台输出




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值