如果我有这样的枚举:
enum Beer
{
Bud = 10,
Stella = 20,
Unknown
}
Run Code Online (Sandbox Code Playgroud)
为什么在将int超出这些值的值转换为某种类型时,它不会抛出异常Beer?
例如,以下代码不会抛出异常,它会向控制台输出"50":
int i = 50;
var b = (Beer) i;
Console.WriteLine(b.ToString());
Run Code Online (Sandbox Code Playgroud)
我觉得这很奇怪......任何人都可以澄清吗?
有更干净,更聪明的方法吗?
我正在使用数据库来获取数据以填充对象并将数据库字符串值转换回其枚举(我们可以假设数据库中的所有值都是匹配枚举中的值)
有问题的行是下面的行设置EventLog.ActionType ...我开始质疑我的方法的原因是因为在等号之后,VS2010一直试图通过放置这个来覆盖我正在键入的内容:"= EventActionType("
using (..<snip>..)
{
while (reader.Read())
{
// <snip>
eventLog.ActionType = (EventActionType)Enum.Parse(typeof(EventActionType), reader[3].ToString());
...etc...
Run Code Online (Sandbox Code Playgroud)