【发布时间】:2012-11-18 22:15:39
【问题描述】:
在 java 中,我可以很容易地用附加数据描述一个枚举。
我可以这样描述它
public enum OperatorType
{
GreaterOrEqual (">=", "GreaterOrEqual"),
Greater (">" ,"Greater"),
Less ("<", "Less"),
LessOrEqual ("<=", "LessOrEqual"),
Equal ("==", "Equal"),
Between ("Between", "Between"),
Around ("Around","Around");
private final String symbol;
private final String name;
private OperatorType(final String symbol, final String name) {
this.symbol = symbol;
this.name = name;
}
}
然后添加一个迭代 values() 的静态方法,将所有数据添加到 hashmap 并允许通过其属性之一作为键从映射中检索完整的枚举数据。
简而言之,枚举是java中一个非常发达的类型。
现在,
迁移到 C#,我有什么选择?
我想保存一个枚举及其属性,将其加载到地图中,并在需要时按键检索。我有什么可以帮助的吗(例如,每个枚举都有一个单音 - 这不是一个好主意)。
谢谢。
【问题讨论】:
-
C# 不支持这样的东西。对不起。
-
java 是一只害群之马。你可以做一些数据容器,只使用枚举作为键。
-
@Toni:害群之马?这个功能太棒了。
-
但是对于您的特定用例,您不需要在枚举中包含那种东西。只需在(帮助程序)类中提供一个静态方法,例如
PopulateOperatorMapping,在其中你用枚举到字符串元组的映射填充字典,你应该没问题。 -
Java 风格枚举的最大优点是它们是类型安全的:编译器强制该类型的任何有效实例始终是枚举值之一。另一方面,在 C# 中,枚举实际上只是简单的
int之上的少量语法糖。