C#开发WinForm之枚举 系统管理员 2022-04-08 09:22 317阅读 0赞 ## C\#开发WinForm之枚举 ## ### 文章目录 ### * * C\#开发WinForm之枚举 * 前言 * 基本情况 * * Enum转字符串 * Enum转int * 字符串转Enum * int转Enum * 判断某个整型是否定义在枚举中 * 自定义返回字符串 * 扩展 # 前言 # 几乎高级语言都有枚举,枚举值是int,值从0开始,如果我们想给枚举赋个字符串呢,用枚举值表示字符串怎么做到? # 基本情况 # 常见枚举 enum Colors \{ Red, Green, Blue, Yellow \}; 可以取到如下值 ## Enum转字符串 ## string valueStr = Colors.Red.ToString();//值为Red ## Enum转int ## int value = (int)Colors.Red; ## 字符串转Enum ## (Colors)Enum.Parse(typeof(Colors), "Red") ## int转Enum ## 1. 可以强制转换将整型转换成枚举类型。 例如:Colors color = (Colors)2 ,那么color即为Colors.Blue 2. 利用Enum的静态方法ToObject。 public static Object ToObject(Type enumType,int value) 例如:Colors color = (Colors)Enum.ToObject(typeof(Colors), 2),那么color即为Colors.Blue ## 判断某个整型是否定义在枚举中 ## public static bool IsDefined(Type enumType,Object value) 例如:Enum.IsDefined(typeof(Colors), n)) # 自定义返回字符串 # 如果我想通过Red枚举获得红色值怎么办 新建RemarkAttribute.cs using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DongliCAD.dyEnum { public class RemarkAttribute : Attribute { public RemarkAttribute(string remark) { this.Remark = remark; } /// <summary> /// 备注 /// </summary> public string Remark { get; set; } } } 新建EnumExtension.cs using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace DongliCAD.dyEnum { /// <summary> /// 枚举扩展类 /// string style = EnumExtension.GetRemark(MongoLogicOp.style);取备注 ///int style = (int)MongoLogicOp.style;取int值 ///string style = MongoLogicOp.style.ToString();//取字符串,返回的字符串和属性名一样 /// /// /// </summary> public static class EnumExtension { /// <summary> /// 获取枚举的备注信息 /// </summary> /// <param name="em"></param> /// <returns></returns> public static string GetRemark(this Enum em) { Type type = em.GetType(); FieldInfo fd = type.GetField(em.ToString()); if (fd == null) return string.Empty; object[] attrs = fd.GetCustomAttributes(typeof(RemarkAttribute), false); string name = string.Empty; foreach (RemarkAttribute attr in attrs) { name = attr.Remark; } return name; } /// <summary> /// 获取备注信息对应的枚举值 /// </summary> /// <param name="remark"></param> /// <returns></returns> public static string ByRemark<T>(this string remark) { Type type = typeof(T); FieldInfo[] fds = type.GetFields(); foreach (var fd in fds) { object[] attrs = fd.GetCustomAttributes(typeof(RemarkAttribute), false); foreach (RemarkAttribute attr in attrs) { var name = attr.Remark; if (name == remark) return fd.Name; } } return null; } } } 枚举定义如下 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DongliCAD.dyEnum { enum Colors { [Remark("红色")] Red, [Remark("绿色")] Green, [Remark("蓝色")] Blue, [Remark("黄色")] Yellow } } 其中\[Remark(“红色”)\]是在RemarkAttribute.cs里定义的。 取红色:EnumExtension.GetRemark(Colors.Red); 取黄色:EnumExtension.GetRemark(Colors.Yellow); # 扩展 # **枚举Colors遍历** private static void Main(string[] args) { foreach (Colors color in Enum.GetValues(typeof(Colors))) { int value = (int)color;//0,1,2,3 int valueName = color.ToString();//Red,Green,Blue,Yellow int remakr = EnumExtension.GetRemark(color);//红色,绿色,黄色,黄色 } }
相关 C枚举 ![1598479-20190917163036384-274404394.png][] 转载于:https://www.cnblogs.com/yunshangyue Myth丶恋晨/ 2023年08月17日 16:05/ 0 赞/ 158 阅读
相关 c++枚举和c语言枚举_C语言枚举初学者指南 c++枚举和c语言枚举 Hey, folks! Hope you all are doing well. In this article, we will be discus 曾经终败给现在/ 2023年02月28日 06:05/ 0 赞/ 254 阅读
相关 c++基础温习之枚举 1、代码 include <iostream> using namespace std; enum string{ 本是古典 何须时尚/ 2022年09月25日 09:23/ 0 赞/ 198 阅读
相关 C#——枚举 枚举 ![0_13315183659D8L.gif][] > 声明枚举的条件:确定数量,确定值的取值范围。 > > 枚举的语法:(1)声明枚举的时候和类同级。 > > 灰太狼/ 2022年08月26日 04:48/ 0 赞/ 269 阅读
相关 C#之结构与枚举 在学习VB时我们都知道VB有三大结构:顺序、选择、循环;也听说过枚举函数,那么在C\中我们又将接触到这类知识,其实在C\中是一样的,语言都是相通的,他们有共性,更有区别,不然他 港控/mmm°/ 2022年08月18日 12:23/ 0 赞/ 203 阅读
相关 C++枚举 1. 介绍 第一次学习枚举类型时,觉得这个名字很诡异。但是后来发现,“枚举”真的特别传神,枚举就是可数的意思。 当你发现某个类型的值是数得过来的,那就派枚举出场吧。 你的名字/ 2022年08月05日 00:58/ 0 赞/ 268 阅读
相关 枚举【C#】 简单总结一下枚举的用法: 什么是枚举? 枚举简单的说是一种数据类型,只不过这种数据类型只包含自定义的特定数据,它是一组有共同特性的数据的集合。举个例子,颜色也可以 一时失言乱红尘/ 2022年06月16日 05:44/ 0 赞/ 273 阅读
相关 C#开发WinForm之枚举 C\开发WinForm之枚举 文章目录 C\开发WinForm之枚举 前言 基本情况 Enum转字符串 Enum转 系统管理员/ 2022年04月08日 09:22/ 0 赞/ 318 阅读
相关 C#枚举 Gender.cs 解决方案管理器--->右击项目--->添加/类--->代码文件 /// <summary> /// 性别类型 àì夳堔傛蜴生んèń/ 2022年01月23日 22:57/ 0 赞/ 295 阅读
相关 C#枚举 using System; using System.Collections.Generic; using System.Linq; using System.Text; 秒速五厘米/ 2022年01月10日 15:49/ 0 赞/ 314 阅读
还没有评论,来说两句吧...