从value获取Enum类型

本文关键字:类型 Enum 获取 value | 更新日期: 2023-09-27 17:50:27

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
  }

从value获取Enum类型

你所需要做的就是转换值。

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
}