我需要命名空间范围的常量。 所以我可以选择使用枚举,例如:
public enum Token
{
INFORMATIONAL,
WARNING,
ABORT,
FATAL
};
但缺点是,例如在 WPF 中,我需要时不时地将它们转换为 int。
所以我想,为什么不
public static class Token
{
public const int
INFORMATIONAL = 0,
WARNING =1,
ABORT = 2,
FATAL = 3;
};
在源代码中,它们看起来一样,而且我没有转换问题。 那么枚举的根本原因是什么? 我显然错过了一些东西。 枚举的原因是什么?
最佳答案
据我所知,枚举只有一个优点:类型安全。
编辑:他们还有 [Flag] 选项,这有助于在一个变量中编码大量设置。感谢约翰提醒我。
有一篇关于 Primitive Obession 的有趣文章(我真的很惊讶自从昨天得知它以来我经常链接它)。
它适用于你这样的情况:如果你只是在任何地方使用 Primtives,编译器就不会警告你那么多。您可能会尝试将 42 分配给一个变量,而该变量本应 分配给其中一个常量值。
但是试图将除有效值之外的任何值分配给枚举?很难/不可能偶然做到。
关于c# - 另一个枚举与 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58762796/