【发布时间】:2012-07-16 15:25:36
【问题描述】:
我正在使用带有我正在使用的方法的范围,我的经理要求我使用 Enum 而不是整数,所以不要使用这个:
public virtual int MyMethod(int value)
{
int result = 0;
if (value >= 0 && value <= 3333)
{
result = 1;
}
else if (value >= 3334 && value <= 6666)
{
result = 2;
}
else if (value >= 6667 && value <= 10000)
{
result = 3;
}
return result;
}
我使用这样的东西:
public virtual int MyMethod(int value)
{
int result = 0;
if (value >= (int)EnumClass.Range.Low.Min && value <= (int)EnumClass.Range.Low.Max)
{
result = 1;
}
else if (value >= (int)EnumClass.Range.Medium.Min && value <= (int)EnumClass.Range.Medium.Max)
{
result = 2;
}
else if (value >= (int)EnumClass.Range.High.Min && value <= (int)EnumClass.Range.High.Max)
{
result = 3;
}
return result;
}
EnumClass 有其他 Enum 用于其他方法(即 Rating、Priority),所以我希望 Range 保持它自己的变量,有点像这样:
public static enum Rating
{
Low = 1,
Medium,
High
};
public static enum[] Range =
{
enum Low
{
Min = 0,
Max = 3333
},
enum Medium
{
Min = 3334,
Max = 6666
},
enum High
{
Min = 6667,
Max = 10000
}
};
但是,在初始化该数组时出现错误,那么还有其他方法可以实现吗?如果可能的话,我想避免将它们设为三个 Enum,但如果不可避免,我会使用这个:
public static enum Rating
{
Low = 1,
Medium,
High
};
public static enum RangeLow
{
Min = 0,
Max = 3333
};
public static enum RangeMedium
{
Min = 3334,
Max = 6666
};
public static enum RangeHigh
{
Min = 6667,
Max = 10000
};
【问题讨论】:
-
数组包含一个值的列表;您似乎在要求一个包含 types 列表的数组。
-
你的经理不是程序员。您不希望在此处使用枚举,因为这不是枚举。您需要一组具有适当名称的常量。
-
@Skizz 不,他不是。我也想使用常量,但他坚持使用 Enum。