• C#枚举类型,提供了Description,让你更好的直接这个枚举所代表的意义。 需要引用,using System.ComponentModel; public enum EnumStock { [Description("正常入库")] ZCRK = 101, [Description("销售...

    C#的枚举类型,提供了Description,让你更好的直接这个枚举所代表的意义。

    需要引用,using System.ComponentModel;

        public enum EnumStock
        {
            [Description("正常入库")]
            ZCRK = 101,
            [Description("销售退货")]
            XSTH = 102
        }

    有的时候,会遇到,给你101,你需要将101转换成 正常入库,这个时候,就需要自己扩展枚举类型。

    首先插入如下代码:

        public class EnumHelper
        {
            public static string GetDescription(Enum obj)
            {
                string objName = obj.ToString();
                Type t = obj.GetType();
                System.Reflection.FieldInfo fi = t.GetField(objName);
                System.ComponentModel.DescriptionAttribute[] arrDesc = (System.ComponentModel.DescriptionAttribute[])fi.GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false);
    
                return arrDesc[0].Description;
            }
            public static void GetEnum<T>(string a, ref T t)
            {
                foreach (T b in Enum.GetValues(typeof(T)))
                {
                    if (GetDescription(b as Enum) == a)
                        t = b;
                }
            }
        }
    

    调用转换,这样就能做转换,将101转换成对应的正常入库

    EnumStock type = (EnumStock)Enum.Parse(typeof(EnumStock), “101”);
    string typeName = EnumHelper.GetDescription(type);

    这样调用较为复杂,可以用Extension扩展方法来进行拓展。

    对类进行如下修改,静态类

     public static class EnumHelper
        {
            public static string GetDescription(this Enum obj)
            {
                string objName = obj.ToString();
                Type t = obj.GetType();
                System.Reflection.FieldInfo fi = t.GetField(objName);
                System.ComponentModel.DescriptionAttribute[] arrDesc = (System.ComponentModel.DescriptionAttribute[])fi.GetCustomAttributes(typeof(System.ComponentModel.DescriptionAttribute), false);
                return arrDesc[0].Description;
            }
            public static void GetEnum<T>(string a, ref T t)
            {
                foreach (T b in Enum.GetValues(typeof(T)))
                {
                    if (GetDescription(b as Enum) == a)
                        t = b;
                }
            }
        }

    修改后直接.就会有代码提示,非常的方便

         EnumSumBurnType type = (EnumSumBurnType)Enum.Parse(typeof(EnumSumBurnType), dr["type"].TryParseToString());
         type.GetDescription();

     

    展开全文
  • C#中枚举的使用

    2017-10-18 17:00:12
    C#枚举的使用 枚举的使用。 首先来看枚举是什么? 枚举类型是一种的值类型,它用于声明一组命名的常数。  一.声明: enum 枚举名 { 中间放入值. } 如: enum Student { 小明,小红 } 那么此枚举中就为小红和小明 二...

                                                     C#枚举的使用

    枚举的使用。
    首先来看枚举是什么?
    枚举类型是一种的值类型,它用于声明一组命名的常数。 

    一.声明:
    enum 枚举名
    {
    中间放入值.
    }
    如:
    enum Student
    {
    小明,小红
    }
    那么此枚举中就为小红和小明

    二.枚举中的赋值

    在枚举中.
    1:
    系统会自动给枚举中的值赋予整数的值(如果不手动赋值,可以理解为下标)
    比如我们想找到他的值,可以写代码如下:
    int num = (int)test.小明;
    Console.WriteLine(num);
    那么此时得到的结果为:0.
    同理如如果输入的为
    int num = (int)test.小红;
    那么得到的结果为:1.
    2
    如果手动给以赋值
     
    enum Student
    {
    小明=10,小红
    }
    int num1 = (int)test.小明;
    Console.WriteLine(num);
    int num2 = (int)test.小红;
    Console.WriteLine(num);
    那么此时得到的结果为:num1=10,num2=11
    而此时
    enum Student
    {
    小明,小红=10
    }
    int num1 = (int)test.小明;
    Console.WriteLine(num);
    int num2 = (int)test.小红;
    Console.WriteLine(num);
    那么此时得到的结果为:num1=0,num2=10
    可以看出后面的为自动增长
    3:
    在枚举中无法访问外面的东西(说专业点就是方法,属性)
    比如:

    是会报错的,当然这里放类是可以的
    三:再看看enum的一下方法
    enum的一些方法貌似都在Enum中(小编是一边学一边写的,有不对的地方请批评)
    打开Enum后我们会发现好多方法

    其实有好多方法。但大多都是重写的。

    如CompareTo,Equals,Format,ToString,ToObject,Parse,GetHashCode相信大多数的方法大家都认识。
    其实,HasFlag,IsDefined,GetValues,GetUnderlyingType,GetName,GetTypeCode,GetNames,大家可能有点陌生
    小编留意的是GetName,GetNames,GetValues
    可能会常用
    (小编现在从网上就找不到对其更好的解释,我们老师也不会讲,现在小编学习很困难)
    (1)首先来看GetName,方法定义为
    public static string GetName(Type enumType, object value);
    返回一个string类型的值
    定义
    string str = Enum.GetName(typeof(Student),0);
    输出结果为:小明
    其中有个typeof可以理解为,是通过他来找到这个enum(枚举)的
    如果你在定义enum中
    小明=10,小红
    那么str将什么都不显示
    (2)GetName,方法定义为
    public static string[] GetNames(Type enumType);
    返回一个string[]类型的值
    定义为:
    string[] str = Enum.GetNames(typeof(Student));
    利用for循环输出的为:小明,小红
    (3)GetValues,(小编发现不是多好用,可以不太会吧。。。)
    方法定义为
    public static Array GetValues(Type enumType);
    返回一个Array类型的值
    Array arr = Enum.GetValues(typeof(test));
    也是通过for循环输出:
    for (int i = 0; i < 2; i++){
    Console.WriteLine(arr.GetValue(i));
    }
    发现结果是一样的.
    第一次发博客.希望能对大家有帮助

    展开全文
  • 原文地址为:c#中枚举类型的定义与使用
    展开全文
  • 既然是枚举类型,那么也就是说enum的变量是不可以轻易改变的,所以C#枚举类型认定成了static变量,使用的时候与static变量一样(一组大写字母表示的是一个特定的类、枚举类型、命名空间或指),来声明使用: ...

    C#中enum类型,相较于其他基本数据类型来说比较特殊,他的本质上是一堆整数组成的结构体,并且支持与整型的显式转化。

    既然是枚举类型,那么也就是说enum中的变量是不可以轻易改变的,所以C#将枚举类型认定成了static变量,在使用的时候与static变量一样(一组大写字母表示的是一个特定的类、枚举类型、命名空间或指),来声明使用:

    CLASS.ENUM var_name = CLASS.ENUM.XXX;
    

    或者在代码端头部加入

    using static NAMESPACE;
    
    展开全文
  • c#遍历枚举(ENUM)类型的方法,简单实用,适合c#初学者
  • Lua访问C#枚举对象 最近unity尝试Lua与C#的互调(用xlua生成相关的binding代码),Lua访问C#侧产生的enum枚举对象时碰上个问题: 按照xlua提供的绑定接口,与用户自定义类型(class、struct)相同,lua侧...

    在Lua中访问C#枚举对象

    最近在unity中尝试Lua与C#的互调(用xlua生成相关的binding代码),在Lua中访问C#侧产生的enum枚举对象时碰上个问题:
    按照xlua提供的绑定接口,与用户自定义类型(class、struct)相同,lua侧现在通过生成一个userdata的方式引用C#侧的enum对象,这说明对xlua而言,C#中的enum也被视作一个class来制定binding规则
    这就导致我不能想当然地直接将C#中的某个枚举对象作为lua中的number处理,就像这样:
    LuaEnum
    CSharpEnum
    然后就开始查怎么获取enum对象代表的整数值:

    1. xlua会不会已经提供了解决方案?(文档里没找到,只有字符或整数如何转到enum对象)
    2. C#侧的enum是否提供了相应的接口?(百度了一下,千篇一律基本都是强转int(就硬抄))
    3. 那我就在C#侧强转enum到int,然后再传给lua侧?(可以是可以,那我可以这么做:
      ①修改xlua的binding代码,在绑定enum类型的对象时加上获取其具体数值的接口
      ②利用xlua的[LuaCallCSharp]标签,在C#侧实现一个转换函数,然后在lua侧调用
      ③这不都是小题大做么。。不靠谱
      )
    4. 继续以上方案2:既然enum在lua侧被视作一个userdata,那么查一下C#中enum的具体定义和实现

    然后就查到了传说中的enum所继承的枚举基类Enum,以及它提供的GetHashCode函数,在Lua侧直接调用GetHashCode获取具体的枚举值,问题解决。
    怪自己对C#这门语言还不熟悉,不过网上那些教程实在是不靠谱。。。要查最好还是查第一手资料,也就是直接看代码或是权威性比较高的书。

    展开全文
  • C#中枚举类型的作用

    2014-04-24 22:18:42
    C#中枚举类型的作用
  • c# 枚举转java枚举案例

    2017-11-21 17:18:57
    前言:我们项目需要从c#语言转换为java语言,下面我们需要讨论的是怎么把C#枚举转换成java枚举。 将C#语言转成java语言?你可能会说,嘿,这不是轻而易举的是么? 事实证明这不是。 c#的枚举可以自我进行位运算...
  • Ulua调用C#枚举

    2018-10-11 18:02:53
    Ulua调用C#枚举 小主也是刚做变成没有多久的人,也是刚开始写文章,如果写的不好的话希望大家给我指出,能共同探讨问题,今天讲一下lua调用C#的枚举类型吧,我之前也网上看了很多的文章,但是大家只是把...
  • C# MVC 枚举转 SelectListItem
  • C# 颜色枚举对照表

    2020-06-03 23:33:03
    枚举名和颜色对比,可以更清楚名称的实际意义,还可以自已进行ARGB调色。
  • C#枚举类型的默认值为0;如果使用过程只定义了枚举类型变量,没有给枚举类型的变量赋值,则系统会自动默认赋值为0,而不是null,非常需要注意;最好定义枚举类型变量的时候赋初值,否则不小心就容易出错...
  • 在C#中枚举字体

    2019-07-27 22:43:42
    在C#中每一种字体都用FontFamily类来表示,如下:FontFamily fontFamily = new FontFamily("Arial");Font font = new Font( fontFamily, 8, FontStyle.Regular, GraphicsUnit.Point);RectangleF rectF = new ...
  • C# 枚举显示中文

    2019-08-11 08:15:26
    转自:http://www.cnblogs.com/yank/archive/2011/09/08/EnumDisplayInChinese.html using System; using System.ComponentModel; public enum TimeOfDay { [Description("上午")] ......
  • C#枚举是以一种值类型的数据结构,定义起来感觉有点像静态类,枚举名是静态类名,枚举项是静态字段,下面是定义格式: (访问级别public/protected/…) enum { value - list } 其中value -list 之间使用...
  • c#获取枚举类的值

    2019-08-30 15:32:23
    c#获取枚举类的值,inkCanvas的使用 foreach (InkCanvasEditingMode item in Enum.GetValues(typeof(InkCanvasEditingMode))) { this.combobox.Items.Add(item); } private void combobox_SelectionChanged...
  • c# 枚举之间的转换

    2020-02-06 18:18:34
    枚举在C#中都会用到,但是你是否想过,枚举之间怎么转换?这篇文章我就来说一下枚举之间的转换。 C# 是不支持不同枚举之间的转换的,但是 CLR 支持,因此我们可以利用 CLR 赋值的兼容性来实现枚举之间的转换。看一下...
  • C# 遍历枚举   C#中,如何获取(遍历)枚举中所有的值:   public enum Suits { Spades, Hearts, Clubs, Diamonds, NumSuits } private static void Main(string[] args) ...
  • C#遍历枚举中所有值

    2019-08-03 01:16:40
    public enum EnumColor {  红色=1,  黑色=2,  白色=3 } foreach (EnumColor item in Enum.GetValues(typeof(EnumColor))) { string ename = item.ToString();  if ("红色" ==...
  • C# 关于枚举器的理解

    2019-09-17 12:00:16
    C# 一般数组都会隐式继承 IEnumerable,可枚举的, 里面就只有一个方法, GetEnumertor, 返回一个IEnumertor, 枚举器. 枚举 包含 四个主要部分, Current.当前位置的object , MoveNext,移动到下一个位置, Reset,...
1 2 3 4 5 ... 20
收藏数 63,477
精华内容 25,390