public enum WeekDays { Sun = 1, Mon = 2, Tue=3, Wed=4, Thu=5, Fri=6, Sat=7 }
我有这个枚举,我有这个枚举的值。我想要做的是通过传递value得到我想要传递给下面函数的类型。我可以用开关箱做这个,有更好的方法吗??
例如:value = 6,则Weekdays。作为类型的Fri应该传递给下面的函数。
public void CreateNew(WeekDays days)
{
//Some logic
}
你所需要做的就是转换值。
CreateNew((WeekDays)6);
枚举值本质上只是类型的整数,因此可以在枚举类型和整型类型之间自由转换。甚至可以将枚举中不存在的整数值转换为该类型而不会出现问题,因此如果您想避免这种情况,请记住在转换之前添加检查值是否存在的验证。
将value强制转换为enum:
CreateNew((WeekDays)value)
顺便说一句,如果值的来源不安全,通常检查值是否在enum中声明是很好的。否则可以通过(WeekDays)42
:
public void CreateNew(WeekDays days)
{
if (!Enum.IsDefined(typeof(WeekDays), days))
throw new ArgumentException();
// SomeLogic
}