从值获取枚举类型

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
  }

3
已经有一个枚举类型可以用来表示这个:DayOfWeek - Tim Schmelter
是的,@TimSchmelter,这是一个虚拟代码。 - ankur
2个回答

11

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

CreateNew((WeekDays)6);

枚举值本质上只是有类型的整数,因此可以自由地在枚举和整型之间进行双向强制类型转换。甚至可以将一个不存在于枚举中的整数值无障碍地转换成该类型,所以如果想要避免这种情况,记得在强制类型转换之前添加验证,检查该值是否存在。


4

只需将值转换为枚举:

CreateNew((WeekDays)value)

顺便说一下,如果值的来源不安全,通常检查枚举中是否声明了该值是很好的做法。否则,你可以传递 (WeekDays)42

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

    // SomeLogic
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接