c# - 如何使用数字创建枚举?

标签 c# grid properties numeric custom-type

是否可以在 C# 中仅使用数字来创建枚举?在我的程序中,我有一个变量 Gain,它只能设置为 1、2、4 和 8。我正在使用 propertygrid 控件来显示和设置该值。如果我要创建这样的枚举...

 private enum GainValues {One, Two, Four, Eight}

我将我的增益变量设为 GainValues 类型,然后属性网格中的下拉列表将只显示增益变量的可用值。问题是我希望增益值以数字方式读取而不是单词。但我不能创建这样的枚举:

 private enum GainValues {1,2,4,8}

那么还有其他方法吗?也许创建自定义类型?

最佳答案

这不是枚举的工作方式。枚举允许您命名特定值,以便您可以在代码中更明智地引用它。

如果您想限制有效数字的域,枚举可能不是正确的选择。另一种方法是创建一个有效值的集合,它可以用作 yield :

private int[] ValidGainValues = new []{ 1, 2, 4, 8};

如果你想让它更安全,你甚至可以创建一个带有私有(private)构造函数的自定义类型,将所有有效值定义为静态、公共(public)实例,然后以这种方式公开它们。但是您仍然需要为每个有效值指定一个名称 - 因为在 C# 中,成员/变量名称不能以数字开头(尽管它们可以包含它们)。

现在,如果您真正想要的是为 GainValues 枚举中的条目分配特定值,您可以这样做:

private enum GainValues { One = 1, Two = 2, Four = 4, Eight = 8 };

关于c# - 如何使用数字创建枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2952192/

相关文章:

java - 从属性文件中获取常量?

c# - 无法通过 ASP.NET Web 应用程序将数据插入 MySQL 表

c# - 如何使关闭按钮像最小化一样工作 : C# Winforms

css - 如何使用 Susy 在列宽中包含填充

image - 带有背景图像和颜色的网格

css - 为什么我们在normalize.css中加入这行代码?

kotlin - 在没有 getValue 和 setValue 的情况下,Kotlin 的 `lazy` 实现如何工作?

c# - 将 ICollection 序列化为 JSON

c# - 使用具有不同绑定(bind)的 DataTrigger 设置样式

text - Kendo UI Grid 禁用拖动行选择