c# - 另一个枚举与 int

标签 c# enums

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

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/

相关文章:

Spring Boot Controller - 枚举参数作为值

Swift - 将同一变量的不同枚举类型传递给一个类

c# - 捕获手写并将其转换为键入文本的最佳方法

c# - EF linq,删除所有相关的OwnerId到Id

c# - 如何在 C# Asp.net 中注销 Page.ClientScript

c# - 具有前导数字的枚举值是否有命名约定?

枚举可以容纳大于 INT_MAX 的无符号整数吗?

c# - 如何使用表单例份验证在 MVC 中实现新用户电子邮件验证

c# - 如何处理 .net MVC Core 中的动态错误页面?

java - 枚举中的内部类在 Java 中总是静态的吗?