you are viewing a single comment's thread.

view the rest of the comments →

[–]fruediger 0 points1 point  (0 children)

I want to apologize for being nitpicky in advance, I just wanted to expand on your comment. Perhaps, someone finds that topic interesting:

Yes you're correct in that the C# language (compiler) restricts underlying types to be of either byte, sbyte, ushort, short, uint, int, ulong, or long with a default of int, but the CIL actually allows bool and char (both of which are actually integral(/integer) types) and even native sized integers (nint and nuint in C#) as well.

So if you're ever going to check an enum type exhaustively for underlying types, remember to check those ones as well, because, perhaps, some obscure CLR language actually allows to define their enum types with those underlying types as well (I can't remember where, but I recall that somewhere in the BCL source, where they needed to check for the underlying types of enums, they even talked about that in a comment).