A C# enum is, like a C enum (as they were explicitly introduced to be compatible with those), just a bunch of constants for integers.
So when you have an enum-typed value, odds are good that it’s one of the named ones but there’s no mechanism anywhere preventing it to be any other integer of the underlying type.
> But how is that an issue? I guess when you are casting random integer to the enum-type without any checks?
Any caller can send any garbage (if you're publishing a package / API), likewise a dependency can return any garbage, etc... C#'s enums are entirely indicative.
So when you have an enum-typed value, odds are good that it’s one of the named ones but there’s no mechanism anywhere preventing it to be any other integer of the underlying type.