C# 从值获取枚举类型

C# 从值获取枚举类型,c#,enums,C#,Enums,我有这个枚举,我有枚举的值。我要做的是通过传递value来获取我想要传递给下面函数的类型。我可以用更好的方法来解决这个问题 例如:值为6,那么Weekdays.Fri作为一个类型应该传递给下面的函数 public enum WeekDays { Sun = 1, Mon = 2, Tue=3, Wed=4, Thu=5, Fri=6, Sat=7 } 你所需要做的就是设定价值 public void CreateNew(WeekDays days) { //Some logic

我有这个枚举,我有枚举的值。我要做的是通过传递value来获取我想要传递给下面函数的类型。我可以用更好的方法来解决这个问题

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

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

你所需要做的就是设定价值

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

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

只需将值强制转换为枚举:

CreateNew((WeekDays)6);
顺便说一句,如果值的来源不安全,通常最好检查值是否在枚举中声明。否则,您可以通过
(工作日)42

CreateNew((WeekDays)value)

已经有了一个枚举:是@TimSchmelter,这是一个伪代码
public void CreateNew(WeekDays days)
{  
    if (!Enum.IsDefined(typeof(WeekDays), days))
        throw new ArgumentException();

    // SomeLogic
}