zoukankan      html  css  js  c++  java
  • C#中的枚举类型enum用法

    定义一个简单的枚举类型:
       enum Days {Sat, Sun, Mon, Tue, Wed, Thu, Fri};        //这时候         Days.Sat = 0 ,后面依此递增。

    当然也可以手动指定起始值:
       enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri}; //这样就从1开始了。

              枚举型的隐含类型为 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
    }

    class FlagTest
    {
        static void Main()
             {
            FileAttributeoptions options= FileAttribute.ReadOnly| FileAttribute.System;
            Console.WriteLine(options);
            Console.WriteLine((int)options);
             }
    }

    输出为:
           
    ReadOnly, System
    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去吧....

    来源:http://blog.163.com/li_crane/blog/static/19502097200822210217451/

  • 相关阅读:
    135.002 智能合约设计-——多员工薪酬系统
    131.007 Unsupervised Learning
    131.006 Unsupervised Learning
    131.005 Unsupervised Learning
    135.001 智能合约设计-——单员工薪酬系统
    131.004 监督学习项目 | 为CharityML寻找捐献者
    131.003 数据预处理之Dummy Variable & One-Hot Encoding
    Chromebook 阿里云ECS 配置 jupyter Notebook
    Python之实现迭代器协议
    使用生成器创建新的迭代模式
  • 原文地址:https://www.cnblogs.com/shangshen/p/4942813.html
Copyright © 2011-2022 走看看