Founded that:
typeof(System.Enum).IsClass == false
It's become strange that System.Enum
has also .IsValueType == false
, but Reflector shows that it is really just an abstract class
.
System.Enum
is a reference type like a System.ValueType
and casting enumeration values to/from System.Enum
reference caused boxing/unboxing. No surprises here.
But what is a reason for Type
class not to tell truth about System.Enum
nature?
There is no anything extraordinary with the System.Enum
type's reflection behavior to make it looks like not a reference type.
It's an issue with .Net 1.1 and 2.0. I haven't checked it in 3.0
From MSDN User David Bernstein
I happened to recently revisit this problem under CLR4 and guess what, it is fixed now. The following definitions:
with this program
Yields the following results: