【发布时间】:2015-10-14 15:25:52
【问题描述】:
所以我是第一次在 C# 中使用枚举,但我认为它不会持续下去,因为我刚刚意识到你在使用它们时缺乏像在 Java 中那样的灵活性。
例如,我想在 Java 中做的等价物看起来像这样:
public enum Days {
Mon("Monday"), Tue("Tuesday"), Wed("Wednesday"), Thu("Thursday", 93), Fri, Sat("Saturday", 44), Sun;
private String longName;
private int other;
Days() {}
Days(String longName) {
this.longName = longName;
}
Day(String longName, int somethingElse) {
this(longName);
this.other = somethingElse;
}
@Override
public String toString() {
return this.longName + ", " + this.other;
}
}
无论如何我可以在 C# 中做到这一点吗?据我所知,使用枚举只能执行以下操作:
public enum Days { Mon=1, Tue=2, Wed=3 }
它不一定是一个枚举,就像 Java 枚举一样。
【问题讨论】:
-
您可以使用自定义属性。
-
那么您希望能够给每个枚举值一个长名称吗?
-
Java 和 C# 的枚举看起来很相似,但它们完全不同:Java 的枚举本质上是类,其中每个枚举常量都是一个实例。相比之下,C 的枚举是序数类型的常量,例如
int。 -
与 Java 不同,C# 枚举与 C 和 C++ 一样仅包含常量。您可以创建一个类似于天数延长的类,并通过它调用您的函数。您可以将枚举的名称和/或值转换为字符串,将字符串转换为枚举的名称和/或值,如果这就是您要查找的全部内容
-
您可以创建一个TypeConverter 类并将其用于格式化目的。