Cómo convertir int a enum en C#? Casting y Enum.Parse
¡Hola a todos! Soy un desarrollador C# principiante y me encontré con una situación que no entiendo. Tengo un enum para los estados de un pedido:
```csharp
public enum OrderStatus
{
Created = 1,
Processing = 2,
Shipped = 3,
Delivered = 4
}
```
Desde la base de datos obtengo un valor numérico del estado como int (por ejemplo, 2). Necesito convertir este int en un elemento del enum OrderStatus. Intenté simplemente asignar:
```csharp
int statusValue = 2;
OrderStatus status = statusValue; // ¡Error de compilación!
```
Pero obtengo un error: "Cannot implicitly convert type 'int' to 'OrderStatus'". Entiendo que C# es un lenguaje fuertemente tipado, pero ¿cómo se realiza correctamente esta conversión?
He oído sobre el casting explícito y el método Enum.Parse, pero no entiendo bien cuál es la diferencia y qué método es mejor usar. También me interesa saber qué sucede si paso un número que no corresponde a ningún valor del enum (por ejemplo, 5 o 0). ¿Se lanzará una excepción?