C#语法手册

枚举类型语法


本页面介绍枚举的定义、使用以及位标志枚举和枚举类静态方法的使用。

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

namespace CSGDemo.CSG030
{
    //https://docs.microsoft.com/zh-cn/dotnet/api/system.enum.format?view=net-5.0


    //#csg030-01
    //枚举类型是由一组命名的常量组成的值类型,这些常量为整数类型。
    //整数值类型包括:sbyte,byte,short,ushort,int,uint,long,ulong,nint,nuint


    //#csg030-02
    //声明枚举类型,默认数值类型为int, 默认值为0,然后根据排序依次加1.
    enum Season
    {
        Spring,
        Summer,
        Autumn,
        Winter
    }

    //#csg030-03
    //使用中文命名枚举项
    enum Season0
    {
        春,
        夏, 
        秋,
        冬
    }

    //#csg030-04
    //声明枚举类型,显式指定值
    enum Season1
    {
        Spring = 1,
        Summer = 2,
        Autumn = 3,
        Winter = 100
    }


    //#csg030-05
    //声明枚举类型,指定枚举使用的整数类型
    enum ErrorCode : ushort
    {
        None = 0,
        Unknown = 1,
        ConnectionLost = 100,
        OutlierReading = 200
    }


    //#csg030-06
    //声明枚举类型,使用位标志,枚举项的值为 2 的幂
    //位标志枚举可以让枚举变量表示枚举值的组合
    [Flags]
    public enum Days
    {
        None = 0b_0000_0000,  // 0
        Monday = 0b_0000_0001,  // 1
        Tuesday = 0b_0000_0010,  // 2
        Wednesday = 0b_0000_0100,  // 4
        Thursday = 0b_0000_1000,  // 8
        Friday = 0b_0001_0000,  // 16
        Saturday = 0b_0010_0000,  // 32
        Sunday = 0b_0100_0000,  // 64
        Weekend = Saturday | Sunday
    }


    public class DemoClass 
    {
        public void DemoMethod0()
        {
            //#csg030-07,位标志枚举的使用
            //声明一个包含多个枚举值的变量
            var meetingdays = Days.Monday | Days.Thursday;

            //判断一个位标志枚举变量是否包含指定的值
            var isMonday = (meetingdays & Days.Monday) == Days.Monday; //结果为True

        }




        //#csg030-08
        //Enum的静态方法提供了一系列常用的枚举操作方法。
        public void DemoMethod()
        {
            var season = Season.Spring;

            //获取枚举变量值的常量名称
            Enum.GetName(typeof(Season), season);

            //检查指定的数值是否在枚举类型中被定义
            Enum.IsDefined(typeof(Season),1);

            //使用枚举的常量名称转换为对应的枚举变量
            Enum.Parse<Season>("Spring");

            //将枚举变量值转换为指定格式的字符串
            Enum.Format(typeof(Season),season,"x");
            //可用的格式参数字符串包含"g","x","d","f"

        }

    }
}