Ciò che altri non hanno detto: con il casting, dici al compilatore che sai cosa stai facendo. Quindi, se lo dici, considera questo come valore enum, lo fa. Gli altri poster hanno sottolineato perché questo è ancora consentito, in quanto il compilatore C# non consente molte cose negative, anche se dici di sapere cosa stai facendo.
Sarebbe davvero pessimo se il valore non fosse consentito, perché in quel caso non si poteva salvare un valore di flag come int. Oppure, qualcuno doveva controllare se l'int è una delle combinazioni consentite, che può essere molto se si utilizza un enumerazione di bandiera (con valori che possono essere uniti).
Ci sono alcune funzionalità di C# che desidero come sviluppatore Java (LINQ!), Ma qui Java ha davvero ragione ... –
@saua: Non necessariamente. Sono vantaggi a questo approccio, così come gli svantaggi. –
Il vantaggio principale di questo punto è che puoi combinare i valori, che dovresti anche contrassegnare con l'attributo [Flags]. –