首页 / C#开发 / 正文

.NET(C#)枚举的使用总结--获取键/值及键/值列表等

18683 发布于: 2014-10-29 读完约需8分钟
在我的站点里,以前写过两篇关于.NET(C#)枚举的文章: 1.C#根据枚举的数值(Value)获取对应的Name值 2.C#/.NET根据枚举Name获取对应的Value值 但以上这些都只是关于枚举的一小部分内容的介绍,今天总结一个枚举在实际应用中的使用,包括获取键/值及键/值列表等,其中常用的枚举的方法有:Enum.GetName(),Enum.GetValue(),Enum.Parse()等,具体的请见下示例样式:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EnumDemo
{
  /// <summary>
  ///用枚举例举出一年的四季
  /// </summary>
  public enum Quarter
  {
    /*
     * 本例中的枚举说明:
     * 一年有四个不同的季度,所以我们在定义枚举的时候,Name是不可以重复的,否则不能通过编译,
     * 但枚举的的值是我们人为规定的,所以可以重复使用,但还是建议使用不重复的数值,否则在后期使用的时候容易混淆
     */
    Spring = 1,
    Summer = 2,
    Autumn = 3,
    ////枚举的数值是可以重复的
    //Autumn = 3,
    Winter = 4
  }
  class Program
  {
    static void Main(string[] args)
    {
      Console.WriteLine("Enum demo start...");
      EnumDemoMethod();
      Console.ReadKey();
    }

    static void EnumDemoMethod()
    {
      //直接获取枚举的数值
      Console.WriteLine("------------------直接获取枚举的数值-----------------");
      Console.WriteLine("Winter value:{0}", (int)Quarter.Winter);

      Console.WriteLine("------------------获取枚举的NAME列表-----------------");
      var names = Enum.GetNames(typeof(Quarter)).ToList();
      names.ForEach(x =>
      {
        Console.WriteLine("Name:{0}", x);
      });

      Console.WriteLine("------------------获取枚举的VALUE列表-----------------");
      //注:这里用到了Linq的Cast<T>()方法
      var values = Enum.GetValues(typeof(Quarter)).Cast<int>();
      foreach (var x in values)
      {
        Console.WriteLine("Value:{0}", x);
      }


      Console.WriteLine("------------------测试根据Value获取Name的方法-----------------");
      foreach (var x in values)
      {
        Console.WriteLine("Name:{0},Value:{1}", x, GetNameByValue(x));
      }

      Console.WriteLine("------------------测试根据Name获取Value的方法-----------------");
      foreach (var x in names)
      {
        Console.WriteLine("Value:{0},Name:{1}", x, GetValueByName(x));
      }
    }

    static string GetNameByValue(int value)
    {
      var str = "";
      try
      {
        str = Enum.GetName(typeof(Quarter), value);
      }
      catch { }
      return str;
    }

    static int GetValueByName(string name)
    {
      if (string.IsNullOrWhiteSpace(name))
        return -1;
      var str = -1;
      try
      {
        str = (int)Enum.Parse(typeof(Quarter), name);
      }
      catch { }
      return str;
    }
  }
}
运行结果如图: enum-full-demo 如果你觉得这篇文章对你有所帮助,那不防给我点个赞吧。^_^

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

上一篇: .NET(C#)Parallel.ForEach()并行执行测试实例

下一篇: .NET(C#)根据指定时间日期获取当月的第一天和最后一天

本文永久链接码友网 » .NET(C#)枚举的使用总结--获取键/值及键/值列表等

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册