从值获取枚举类型

时间:2013-01-03 11:51:33

标签: c# enums

public enum WeekDays { Sun = 1, Mon = 2, Tue=3, Wed=4, Thu=5, Fri=6, Sat=7 }

我有这个枚举,我有枚举的价值。我想要做的是通过传递值获取我想要传递给下面的函数的类型。我可以通过切换案例做任何更好的方法吗?

例如:value是6,那么Weekdays.Fri作为一个类型应该传递给下面的函数。

  public void CreateNew(WeekDays days)
  {
   //Some logic
  }

2 个答案:

答案 0 :(得分:7)

您需要做的就是施放价值。

CreateNew((WeekDays)6);

枚举值基本上只是类型化的整数,因此您可以在枚举和整数类型之间自由地转换。甚至可以将枚举中不存在的整数值转换为该类型而没有问题,因此如果您想避免这种情况,请记住在转换之前添加检查该值的验证。

答案 1 :(得分:3)

只需将值转换为枚举:

CreateNew((WeekDays)value)
通常,如果值的来源不安全,检查是否在枚举中声明了值是否很好。否则你可以通过(WeekDays)42

public void CreateNew(WeekDays days)
{  
    if (!Enum.IsDefined(typeof(WeekDays), days))
        throw new ArgumentException();

    // SomeLogic
}