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