Avatar ·

如何在C#中将int转换为enum?整数和枚举的类型转换

大家好!我是C#新手,在使用枚举时遇到了一个令人困惑的情况。我有这样一个枚举:\n\n```csharp\npublic enum Status\n{\n New = 1,\n InProgress = 2,\n Completed = 3,\n Failed = 4\n}\n```\n\n我从数据库中获取一个整数(例如2),需要将其转换为对应的枚举元素 `Status`。我尝试直接赋值:\n\n```csharp\nint statusFromDb = 2;\nStatus currentStatus = statusFromDb; // 编译错误!\n```\n\n但编译器报错:"Cannot implicitly convert type 'int' to 'Status'"。我理解C#是强类型语言,但如何正确进行这种转换呢?我尝试使用 `(Status)statusFromDb`——似乎可行,但这样安全吗?如果int包含枚举中没有的值(例如99)会怎样?有没有更可靠的方法?提前感谢帮助!\n\n<<>>\n

直接类型转换(cast)——最简单的方法