假设我有一个以整数作为参数的函数。我希望能够使用枚举列表来保持整数值的组织。
例如,理想情况下,我希望能够定义这些(伪代码):
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++;
}
同样,这会起作用,但是当我有很多这些容器类要定义时,这似乎非常麻烦。
答案很可能是没有更简单的方法,我需要成为一个成年人并接受其中一种选择。但我想我会在承诺之前对此进行全面检查。有第三种选择吗?