如何在 C# 中将 int 转换为 enum?类型转换和 Enum.Parse
大家好!我是一名 C# 初学者,遇到了一个让我困惑的情况。我有一个订单状态的枚举 (enum):
```csharp
public enum OrderStatus
{
Created = 1,
Processing = 2,
Shipped = 3,
Delivered = 4
}
```
我从数据库中获取状态数值,类型为 int(例如 2)。我需要将这个 int 转换为 OrderStatus 枚举元素。我尝试直接赋值:
```csharp
int statusValue = 2;
OrderStatus status = statusValue; // 编译错误!
```
但收到错误:“Cannot implicitly convert type 'int' to 'OrderStatus'”。我理解 C# 是强类型语言,但如何正确执行这种转换呢?
我听说过显式转换 (cast) 和 Enum.Parse 方法,但不太明白它们的区别以及哪种方式更好。另外,我还想知道,如果我传递一个与任何 enum 值都不匹配的数字(例如 5 或 0),会发生什么?会抛出异常吗?