There is something that I cannot understand in C#. You can cast an out-of-range int into an enum and the compiler does not flinch. Imagine this
int
enum
if (!Enum.IsDefined(typeof(Colour), 17)) { // Do something }