问题:
在 C# 中,为什么编译器允许分配多个枚举为相同的值?在这种情况下是否建议使用结构体?
答案:
C# 中的枚举本质上是一个继承自 System.Enum 基类的结构体。在幕后,枚举值被定义为结构中的常量。例如,以下枚举定义:
public enum Color { Red = 1, Blue = 1, Green = 1 }
相当于以下伪 C# 代码:
public struct Color : System.Enum { public const int Red = 1; public const int Blue = 1; public const int Green = 1; }
因为包含多个具有相同值的常量的类型没有问题,使用非唯一值定义枚举是允许的。但是,它有一些警告:
虽然使用非唯一枚举值在技术上是合法的,一般不鼓励。相反,请考虑使用结构,它允许您定义具有唯一值的显式成员。但是,与枚举相比,结构可能具有更高的内存开销,因此请根据您的要求明智地使用它们。
以上是为什么 C# 允许非唯一枚举值,我应该使用结构体吗?的详细内容。更多信息请关注PHP中文网其他相关文章!