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


0 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 for Bitfields,使用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。 使用struct方法,我不必转换为int来获取底层值。我知道使用枚举版本可以保证三个值中只有一个会被使用,而对于struct版本,任何整数都可以used,表示Int32.MinValue和Int32.MaxValue之间的任何值。 除了这个之外,还有其他好处吗?






Related