c# - 在 C# 中实现枚举对象类型

标签 c# java enums

我是 C# 新手,但我用 Java 做过很多编程。在 Java 中,您可以通过声明具有多个字段和私有(private)构造函数的 enum 来创建枚举对象类型(仅具有固定数量可能值的类)。例如,this Java tutorial显示如何创建枚举“行星”类型,它是一个对象(它具有多个数据字段),但具有固定数量的值(只有 8 个行星,因此该对象只存在 8 个实例)。

但是,在 C# 中似乎没有任何方法可以做到这一点,因为 C# 中的 enum 只允许是基本类型,特别是数字基本类型。是否有任何简单的方法可以强制 C# 对象类型具有固定数量的可能实例值?或者我应该诉诸某种单例模式/工厂模式架构,例如为类提供一个私有(private)构造函数并定义固定数量的返回有效实例之一的静态方法?

最佳答案

System.Drawing.Color就是此类事情的一个例子。

Color 类型具有Color 类型的静态属性集合,可提供对命名颜色的访问。例如,System.Drawing.Color.CornflowerBlue .

Color 类型允许您在不使用指定颜色静态成员的情况下创建 Color。如果你想禁止这种情况,你可以让你的类只有私有(private)构造函数。那么访问您的类型的实例的唯一方法是选择您的类型的可用静态属性之一。

关于c# - 在 C# 中实现枚举对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17371902/

相关文章:

java - Eclipse (java) 网络服务,哪些文件要版本化以及如何将项目正确地拉到新计算机上?

Java:通过引用集合克隆任意集合

java - 通过反射访问枚举名称

c# - 如何从浏览器应用程序控制扫描仪?

c# - 如何优雅地跳出 AbandonedMutexException?

java - 两组大数 - 它们的总和的分数

delphi - 最小枚举大小在 Delphi 中不起作用

swift - 有没有办法定义一个幂为 2(或计算值)的快速枚举

c# - 为什么 C# 不能从这个看似简单、明显的案例中推断出类型

c# - 使用空合并运算符进行比较