[C#] 为什么我更喜欢一个枚举到一个具有常量值的结构


Answers

枚举可以从字符串或数字无反射查找,例如

// VERY important when using ORMs, as databases usually use an int
UserType ut = (UserType)2; 

// Useful when parsing config files like appSettings.
UserType utf = (UserType)Enum.Parse(typeof(UserType),"Admin");

在框架中还有很多东西可以更快地与Enums进行共同的操作。 另一件事是位域的FlagsAttribute ,这是不容易的,与const int。

检查Enum类的成员是否有更多的帮助函数,例如GetNames和GetValues。

Question

一个结构与常量:

public struct UserType
{
  public const int Admin=1;
  public const int Browser=2;
  public const int Operator=3;
}

现在让我们用一个枚举来达到同样的目的:

public enum UserType
{
  Admin=1,
  Browser,
  Operator
}  

两者都分配在堆栈上。 在这两种情况下,我会说UserType.Admin。 结构的方式,我不会必须强制转换为int来获得底层的值。我知道,使用枚举版本,它是保证三个值中的一个,只有一个将被使用,而对于struct版本,任何整数都可以使用,这意味着Int32.MinValue和Int32.MaxValue之间的任何值。 除了这个之外还有其他更喜欢枚举的好处吗?