另一个 enum 与 int

Eri*_*rik 1 c# enums

我需要命名空间范围的内容。所以我可以选择使用枚举,例如:

public enum Token
{
    INFORMATIONAL,
    WARNING,
    ABORT,
    FATAL
};
Run Code Online (Sandbox Code Playgroud)

但缺点是,例如在 WPF 中,我需要时不时地将它们转换为 int。

所以我想,为什么不呢

public static class Token 
{
    public const int
    INFORMATIONAL = 0,
    WARNING =1,
    ABORT = 2,
    FATAL = 3;
};
Run Code Online (Sandbox Code Playgroud)

在源代码中,它们看起来相同并且我没有转换问题。那么使用枚举的原因到底是什么?我显然错过了一些东西。枚举的原因是什么?

Chr*_*her 5

据我所知,枚举只有一个优点:类型安全。

编辑:他们还有 [Flag] 选项,有助于在一个变量中编码大量设置。感谢约翰提醒我。

有一篇关于原始痴迷的有趣文章(自从昨天了解到它以来,我真的很惊讶我经常链接到它)。

它适用于您的情况,如下所示:如果您只是在任何地方使用 Primitives,编译器就不会警告您太多。您可能会尝试将 42 分配给仅应分配给这些常量值之一的变量。

但是尝试将除有效值之外的任何值分配给枚举?很难/不可能偶然做到。

  • 不要忘记“[标志]”。枚举使使用标志比在“int”中执行等效任务要容易得多,尤其是“HasFlag”方法。 (2认同)
  • @约翰补充道。谢谢,我忘了那些了。 (2认同)