Loading... 枚举在开发中是很有用的,就以位枚举在权限设计中为例. **1.定义一个enum** 加[Flags]的标记,表示是位枚举,同时枚举中的值还必须是2的幂. ```csharp hljs [Flags]//位枚举的Attribute public enum Roles//值必须为2的幂 { none = 0, admin = 1, user = 2, guest = 4, all = admin | user | guest//所有1 //all = admin & user & guest//所有2 } ``` **2.使用以下两个方法可以获取枚举中的值和名称,** 当然你可以将它们作为datasource绑定到前台的checkBoxList,dropDownList ```csharp hljs int[]intRoles = (int[])Enum.GetValues(typeof(Roles));//获取该枚举所有项的值 string[] strRoles = Enum.GetNames(typeof(Roles));//获取该枚举所有项的名称 ``` **3.对枚举进行操作** |是位或操作,&是位与操作,^是位或操作; 代码: ```csharp hljs namespace ConsoleApplication1{ class Program { [Flags]//位枚举的Attribute public enum Roles//值必须为2的幂 { none = 0, admin = 1, user = 2, guest = 4, all = admin | user | guest//所有1 //all = admin & user & guest//所有2 } public static void Main(string[] args) { #region 位枚举 Roles role = (Roles)5;//将int值转换为枚举( admin = 1+ guest = 4就是5) role = role | Roles.admin | Roles.user;//通过位或操作为该角色添加权限 role = role ^ Roles.admin;//通过位非操作删除admin权限 int intRole = Convert.ToInt32(role);//将枚举转为int值,可以存入数据库 List<Roles> roles = GetEnum(role);//从数据库中取出int值,将其转换出Roles的list表 int[]intRoles = (int[])Enum.GetValues(typeof(Roles));//获取该枚举所有项的值 string[] strRoles = Enum.GetNames(typeof(Roles));//获取该枚举所有项的名称 #endregion Console.ReadKey(); } #region 位枚举的学习 /// <summary> /// 获取角色列表list /// </summary> /// <param name="role"></param> /// <returns></returns> public static List<Roles> GetEnum(Roles role) { List<Roles> roles = new List<Roles>(); foreach (int i in Enum.GetValues(typeof(Roles))) { if ((role & (Roles)i) != 0) { roles.Add((Roles)i); } } return roles; } #endregion } } ``` 最后修改:2022 年 03 月 15 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏