使用基于整数的枚举

时间:2010-10-04 23:29:19

标签: c# .net enums

是否可以在不进行演员表的情况下进行枚举?

class Program
{
   private enum Subject 
   { 
       History = 100, Math =200, Geography = 300
   }
    static void Main(string[] args)
    {
      Console.WriteLine(addSubject((int) Subject.History)); //Is the int cast required.
    }
    private static int addSubject(int H)
    {
        return H + 200;
    }
}

2 个答案:

答案 0 :(得分:2)

我会尝试一下业务逻辑应该是什么:

class Program
{
   [Flags]   // <--
   private enum Subject 
   { 
       History = 1, Math = 2, Geography = 4    // <-- Powers of 2
   }
    static void Main(string[] args)
    {
        Console.WriteLine(addSubject(Subject.History));
    }
    private static Subject addSubject(Subject H)
    {
        return H | Subject.Math;
    }
}

答案 1 :(得分:1)

不,因为那样你就会失去类型安全性(这是C ++枚举的问题)。

枚举类型是实际类型而不仅仅是命名整数是有益的。相信我,不得不偶尔施放一次并不是问题。但是在你的情况下,我认为你根本不想使用枚举。看起来你真的在追求值,所以为什么不用公共常量创建一个类呢?

顺便说一句,这让我感到畏缩:

private static int addSubject(int H)
{
    return H + 200;
}