Lo que otros no dijeron: Con el casting, le dice al compilador que sabe lo que está haciendo. Entonces, si lo dice, trate esto como un valor enum, lo hace. Los otros carteles señalaron por qué esto todavía está permitido, ya que el compilador de C# no permite muchas cosas malas, incluso si dices que sabes lo que estás haciendo.
Sería muy malo si no se permitiera el valor, porque entonces no se podía guardar un valor de indicador como int. O bien, alguien tenía que comprobar si el int es una de las combinaciones permitidas, lo que puede ser mucho si usa una enumeración de indicador (con valores que pueden combinarse).
Hay algunas características de C# que anhelo como desarrollador de Java (LINQ!), Pero aquí Java realmente lo hizo bien ... –
@saua: No necesariamente. Son ventajas de este enfoque, así como desventajas. –
La principal ventaja de este punto es que puede combinar los valores, que también debe marcar con el atributo [Flags]. –