6
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
  }
4

2 回答 2

11

您需要做的就是铸造价值。

CreateNew((WeekDays)6);

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

于 2013-01-03T11:52:48.863 回答
4

只需将值转换为枚举:

CreateNew((WeekDays)value)

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

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

    // SomeLogic
}
于 2013-01-03T11:52:58.457 回答