摘要: 一、问题的提出最近,博客园有许多blogger提出了为枚举显示中文名称的文章,例如[让枚举成员显示出中文信息],[利用自定义属性,定义枚举值的详细文本],[细节决定成败:映射枚举],[利用DescriptionAttribute定义枚举值的描述信息],还有原来看过的一些文章(不好意思地址没记)。这些文章的共同特点就是,使用了自定义Attribute附加在枚举值上, 在运行时获取枚举相关的信息。这种方法中,由于是使用反射,因为有些人关心其中的性能问题——特别是处理大量数据的时候,例如将大量枚举导入到DataGrid的时候;而且人们也发现,Enum本身的ToString方法也使用了反射的方法,因此 阅读全文
posted @ 2012-04-07 17:05 怡馨 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 在WinForm开发中,经常会遇到开发双语版本的问题,利用Resource功能,很容易实现。而前不久,我就遇到了一个难题——枚举的双语显示问题,问题如下:这里先定义一个枚举:enum Sex{Male,Female}然后,我们在WinForm一个窗口中放入一个ComboBox(命名为cbxSex),并把它的数据源绑定到Sex枚举,代码如下:cbxSex.DataSource = enum.GetValues(typeof(Sex));此时,界面显示如下:但是,此时要做中文版时,发现没法在不修改cbxSex.DataSource = enum.GetValues(typeof(Sex))的基础上 阅读全文
posted @ 2012-04-07 16:11 怡馨 阅读(358) 评论(0) 推荐(0) 编辑
摘要: 1。问题 在设计实体类的时候,通常我们会把某些字段设置为枚举值,例如性别:publicenumSex:int{Male='M',Female='W',NotRestrict='A'} 这样好处不用说,通常是为了直观的考虑,还有限制输入的好处;如果强制用int转换,还以用System.Enum.IsDefined() 来判断枚举是否被定义,但是麻烦的是在界面UI上绑定的时候,我们通常要这样写:<asp:DropDownListRunat="server"id="ddlSex"><asp:Li 阅读全文
posted @ 2012-04-07 15:13 怡馨 阅读(775) 评论(0) 推荐(0) 编辑
摘要: Enumeration的默认值是从0开始的int如下: enum Direction{ UP, RIGHT DOWN, LEFT,};此时UP=0, DOWN=1...依此类推改变默认值:enum Direction{ UP=1, RIGHT=2, DOWN=3, LEFT=4,};改变类型(只能改变成:byte, sbyte, short, ushort, int, uint, long, ulong):enum Direction : long{ UP = 1111111111, DOWN = 1111111112, LEFT = 1111111113, RIGHT = 111111111 阅读全文
posted @ 2012-04-07 13:26 怡馨 阅读(1009) 评论(0) 推荐(0) 编辑
摘要: 1.定义枚举时直接用中文由于VS对中文支持的很不错,所以很多程序员都采用了此方案.缺点:1.不适合多语言 2.感觉不太完美,毕竟大部分程序员大部分代码都使用英文2.利用自定义属性定义枚举值的描述(博客园-大尾巴狼)缺点:不适合多语言原文:http://www.cnblogs.com/hilite/archive/2006/03/28/360793.html枚举定义:[EnumDescription("订单、订单中的产品、产品项的状态。")]public enum OrderStateEnum {[EnumDescription("未开始")] Ready 阅读全文
posted @ 2012-04-07 11:51 怡馨 阅读(1407) 评论(0) 推荐(0) 编辑