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"
}
}
}