c# 枚举

定义:
枚举: 是一组命名整型常量 (一组常量表示值可以重复! )
枚举可以显示的声明枚举对应的整型类型,隐式是int。
显示的声明

public enum Days : byte{
			default = 1,
			Sun = 1,
			Mon = 2,
			tue = 4,
			Wed = 8,
			thu = 16,
			Fri = 32,
			Sat = 64
		};

Enum.GetName 方法
获取枚举值对应的名称。没有对应值则返回 null

Enum.GetNames 方法
获取枚举值对应的所有名称。

Enum.GetUnderlyingType 方法
返回枚举对应的整数类型(定义时声明的)

Enum.GetValues 方法
获取枚举定义中的所有的常量值

Enum.IsDefined 方法
值是否定义对应的枚举 ,主要传入的整型要与定义时的一致,如果定义的是byte,如果输入数字需要强制装换后再传入(byte)1

Enum.TryParse 方法
字符串转枚举值

Enum.Format 方法
格式化枚举

		 * Enum.Format  
		 * "G"/"g" 普通情况如果有等于 value 的枚举值,输出枚举名称,否则返回十进制值 
		 *         枚举使用flag,如果有等于 value 的枚举值,输出枚举名称, 或者输出多个位组合成的枚举名称,如果没有那个组合与值对应 输出十进制值
		 * "D"/"d" 输出十进制值。
		 * "X"/"x" 输出十六进制值。长度由枚举常量类型而定,如byte长度为2 int长度为8
		 * "F"/"f" 不管枚举加不加flag 都与"g"格式中的加flag相同
		 * 要注意 value 传入参数的类型需与枚举的整型类型一致,如枚举是 byte 类型 必须传入byte 不可传入int。
		 * */

枚举声明,
一、可以显示声明枚举对应的整形类型。默认是int类型
二、枚举值对应的常量可以手动赋值,也可以不赋值,不赋值默认是上一个定义的值加1。从0开始

		public enum Days : byte{	//显示声明枚举常量对应的整型数据是 byte;
			Create,     //第一个没手动赋值是0
			Append = 2,	//2
			Read = 4,	//4
			Write,		//上一个加1 = 5
			Open,		//上一个加1 = 6
		};

枚举的使用:
普通用法就不提了,就是把枚举当做常量来用 。
高级用法:枚举加上 flags 特性可以使用位域,也就是使用位运算符来操作枚举。每个枚举常量使用2的幂次方,就有一些妙用了,比如说权限问题。

		[Flags]
		public enum FileMode : byte{	
			Create = 1,  
			Read = 2,	
			Update = 4,
			Delete = 8,
		};

输出代码:

			FileMode fm = FileMode.Create | FileMode.Read;
			
			Console.WriteLine("权限:" + fm.ToString());
			
			if((fm & FileMode.Create) != 0){
				Console.WriteLine("有创建权限!");
			}
			
			if((fm & FileMode.Delete) != 0){
				Console.WriteLine("有删除权限!");
			}
			
			if((fm & FileMode.Read) != 0){
				Console.WriteLine("有读取权限!");
			}
			
			if((fm & FileMode.Update) != 0){
				Console.WriteLine("有更新权限!");
			}

c# 枚举_第1张图片
增加权限
fm = fm | File.Update;
去除权限
fm = fm & ~File.Updat;
取没有的权限
fm = ^fm;

你可能感兴趣的:(c#)