【发布时间】:2012-09-14 16:34:13
【问题描述】:
假设我有一个将整数作为参数的函数。我希望能够使用枚举列表来保持整数值的组织。
例如,我希望能够定义这些(伪代码):
public enum days
{
monday,
tuesday,
etc...
}
public enum months
{
january,
february,
etc...
}
int doSomething(enum x)
{
return x + 1;
}
然后就可以使用枚举列表中的任何一个来调用函数,如下所示:
int a = doSomething(days.monday);
int y = doSomething(months.february);
这显然不会按原样工作,因为 doSomething 需要仅使用其中一个枚举(即几天或几个月)来定义。我知道几个选项。一种是简单地转换为 int:
int a = doSomething((int)days.monday);
int y = doSomething((int)months.february);
唯一的问题是这个函数在我的代码中的很多地方都被调用了,而且不得不把“(int)”放在所有地方很笨拙(将这些 int 值组合在一起的主要动机之一进入枚举首先是使代码更具可读性)。
另一种选择是完全避免枚举,而是将值捆绑到容器类中,例如:
static class Days
{
static int x = 0;
static int monday = x++;
static int tuesday = x++;
}
同样,这会起作用,但当我要定义很多这些容器类时,这似乎非常麻烦。
答案很可能是没有更简单的方法,我需要成为一个成年人并接受其中一种选择。但我想我会在承诺之前对此进行全面检查。有第三种选择吗?
【问题讨论】:
标签: c# enums enumerators