C#中的枚举类型,原来有这么多用法

  枚举型的隐含类型为 int 型, 例如 int x=(int)Days.Sat ; 一点问题没有。据MSDN说枚举类型的隐含类型可以为除了char以外的任意数字类型…… [ Every enumeration type has an underlying type, which can be any integral type except char. ]

  下面这个例程演示使用长整型作为枚举的隐含类型:

  // keyword_enum2.cs

  // Using long enumerators

  using System;

  public class EnumTest

  {

  enum Range :long {Max = 2147483648L, Min = 255L};

  static void Main()

  {

  long x = (long)Range.Max;

  long y = (long)Range.Min;

  Console.WriteLine("Max = {0}", x);

  Console.WriteLine("Min = {0}", y);

  }

  }

  如果需要重新取回长整形值,也是一个转换就可以了。 long x = (long)Range.Max;

  最有意思的还是下面要说的,enum的[Flags]标记。啥也不说啦,看程序吧:

  //The following code example illustrates the use and effect of the

  //System.FlagsAttribute attribute on an enum declaration.

  // enumFlags.cs

  // Using the FlagsAttribute on enumerations.

  using System;

  [Flags]

  public enum FileAttribute

  {

  ReadOnly= 0x01,

  Hide= 0x02,

  System= 0x04,

  Archived= 0x08

  sxbjz.blog.jp

  hzbjz.blog.jp

  jnbjz.blog.jp

  dybjz.blog.jp

  hfbjz.blog.jp

  }

  class FlagTest

  {

  static void Main()

  {

  FileAttributeoptions options= FileAttribute.ReadOnly| FileAttribute.System;

  Console.WriteLine(options);

  Console.WriteLine((int)options);

  }

  }

  输出为:

  ReadOnly, System

  labjz.blog.jp

  czbjz.blog.jp

  chuz.blog.jp

  zzmz.blog.jp

  jcbjz.blog.jp

  nbbjz.blog.jp

  5

  看到了吧?呵呵。这就是常用的标志位阿~ 在C#里变得更简单易用了。

  有enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};

  1> 我给定一个值1,怎样把对应的Sun以字符串的形式返回来?(常用在取数据库里的XXX_ID并转换成对应的值的时候用。——不过有点硬编码的感觉。)

  答:Convert.ChangeType( enumValue, enumType ).ToString();// enumValue=1; enumType=typeof(Days)

  2>我给定一个字符串"Sun",怎么返回enum Day.Sun?

  答: 可以直接用 Enum.Parse( enumType, string,[boolean])来解决问题. ;例如这个例子, Enum.Parse(typeof(Day), "Sun", true) 就返回Day.Sun , 第3个参数指定是否大小写敏感. 可以省略.

  3>我想知道 enum Day 中所有的字符串值. 怎么写?

  答: 这个貌似也很简单哦, foreach(string name in Enum.GetNames(typeof(Day))) Console.WriteLine(name); 还有一个Enum.GetName() ,具体用法看MSDN去吧....

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值