zoukankan      html  css  js  c++  java
  • C#中的枚举

     1 namespace ConsoleApplication8
     2 {
     3   enum orientation : byte 
     4   {
     5     north=0,
     6     south=1,
     7     east=2,
     8     west=3
     9   }
    10   class Program
    11   {
    12     static void Main(string[] args)
    13     {
    14       byte directionByte;
    15       string directionString;
    16       orientation myDirection;
    17 
    18       //获取枚举的字符串
    19       myDirection = orientation.north;
    20       Console.WriteLine("myDirection={0}",myDirection);//north
    21 
    22 
    23       //将枚举的字符串变为字符串所对应的值
    24       directionByte = (byte)myDirection;
    25       //将枚举类型变量转换成字符串类型,用这种方式转换是因为用(string)进行强制类型转换是行不通的,
    26       //但可以使用变量本身进行ToString()转换也是可以的,与使用Convert.ToString()效果相同。
    27       directionString = Convert.ToString(myDirection);
    28       Console.WriteLine("byte equivalent={0}:",directionByte);//0
    29       Console.WriteLine("string equivalent={0}:" ,directionString);//north
    30 
    31 
    32       //将byte数字转换成对应的枚举值(强制转换)
    33       //(,注意:并不是所有的byte类型变量值都可以映射为已经定义的orientation值,orientation类型可以存储其他byte值,
    34       //所以不会直接产生错误,但会在应用程序的后面违反逻辑。)
    35       byte myByte = 1;
    36       myDirection =(orientation)myByte;
    37       Console.WriteLine("byte Outside={0}",myDirection);//south
    38 
    39 
    40       //把string转换成枚举值,语法:Enum.Parse();用法如下:
    41       //(enumerationType)Enum.Parse(typeof(enumerationType),enumerationValueString);
    42       string myString = "east";
    43       myDirection = (orientation)Enum.Parse(typeof(orientation), myString);
    44       byte b = (byte)myDirection;
    45       Console.WriteLine(myDirection);//east
    46       Console.WriteLine(b);//2
    47 
    48       Console.ReadKey();
    49      }
    50    }
    51 }

    对枚举类型进行描述:

    定义枚举类型

     1 using System.ComponentModel;
     2 
     3 namespace HYZT.Ltxy
     4 {
     5     /// <summary>
     6     /// 行程类型
     7     /// </summary>
     8     public enum TripType : byte
     9     {
    10         /// <summary>
    11         /// 单程:One Way 
    12         /// </summary>
    13         [Description("单程")]
    14         OW = 1,
    15 
    16         /// <summary>
    17         /// 往返:Round Trip 
    18         /// </summary>
    19         [Description("往返")]
    20         RT = 2,
    21 
    22         /// <summary>
    23         /// 两段:two segments 
    24         /// </summary>
    25         [Description("两段")]
    26         TS = 3,
    27 
    28         /// <summary>
    29         /// 多段:multi segment 
    30         /// </summary>
    31         [Description("多段")]
    32         MS = 4
    33     }
    34 }

    枚举类型帮助类:

    对描述信息进行操作:

     1 using System;
     2 using System.ComponentModel;
     3 using System.Reflection;
     4 
     5 namespace VariFlightModule
     6 {
     7     public static class EnumHelper
     8     {
     9         /// <summary>
    10         /// 返回枚举项的描述信息
    11         /// </summary>
    12         /// <param name="value">要获取描述信息的枚举项</param>
    13         /// <param name="nameInstead">当枚举值没有定义DescriptionAttribute,是否使用枚举名代替,默认true使用</param>
    14         /// <returns>枚举想的描述信息</returns>
    15         public static string GetDescription(this Enum value, bool nameInstead = true)
    16         {
    17             Type enumType = value.GetType();
    18             DescriptionAttribute attr = null;
    19 
    20             // 获取枚举常数名称。
    21             string name = Enum.GetName(enumType, value);
    22             if (name == null)
    23             {
    24                 return null;
    25             }
    26             // 获取枚举字段。
    27             FieldInfo fieldInfo = enumType.GetField(name);
    28             if (fieldInfo != null)
    29             {
    30                 // 获取描述的属性。
    31                 attr = Attribute.GetCustomAttribute(fieldInfo, typeof(DescriptionAttribute), false) as DescriptionAttribute;
    32             }
    33 
    34             if (attr == null && nameInstead)
    35                 return name;
    36 
    37             return attr == null ? null : attr.Description;
    38 
    39         }
    40 
    41         /// <summary>
    42         /// 获取字段Description
    43         /// </summary>
    44         /// <param name="fieldInfo"></param>
    45         /// <returns></returns>
    46         public static DescriptionAttribute[] GetDescriptAttr(this FieldInfo fieldInfo)
    47         {
    48             if (fieldInfo != null)
    49             {
    50                 return (DescriptionAttribute[]) fieldInfo.GetCustomAttributes(typeof (DescriptionAttribute), false);
    51             }
    52             return null;
    53         }
    54 
    55         /// <summary>
    56         /// 根据Description获取枚举
    57         /// </summary>
    58         /// <typeparam name="T">枚举类型</typeparam>
    59         /// <param name="description">枚举描述</param>
    60         /// <param name="enumName">枚举值</param>
    61         /// <returns>true:成功 false:失败</returns>
    62         public static bool TryGetEnumName<T>(string description, out T enumName)
    63         {
    64             Type _type = typeof (T);
    65             foreach (FieldInfo field in _type.GetFields())
    66             {
    67                 DescriptionAttribute[] _curDesc = field.GetDescriptAttr();
    68                 if (_curDesc != null && _curDesc.Length > 0)
    69                 {
    70                     if (_curDesc[0].Description == description)
    71                     {
    72                         enumName = (T) field.GetValue(null);
    73                         return true;
    74                     }
    75                 }
    76                 else
    77                 {
    78                     if (field.Name == description)
    79                     {
    80                         enumName = (T) field.GetValue(null);
    81                         return true;
    82                     }
    83                 }
    84             }
    85             enumName = default(T);
    86             return false;
    87         }
    88     }
    89 }
  • 相关阅读:
    cmanformat
    mysql-sql语言参考
    jQuery 判断多个 input checkbox 中至少有一个勾选
    Java实现 蓝桥杯 算法提高 计算行列式
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 数独游戏
    Java实现 蓝桥杯 算法提高 成绩排序2
    Java实现 蓝桥杯 算法提高 成绩排序2
    Java实现 蓝桥杯 算法提高 成绩排序2
  • 原文地址:https://www.cnblogs.com/lubolin/p/6433824.html
Copyright © 2011-2022 走看看