Difficulty: Easy
Correct Answer: enum is a value type.
Explanation:
Introduction / Context:
Understanding whether an enum is a value type or a reference type is fundamental to memory layout, assignment semantics, and performance in .NET.
Given Data / Assumptions:
Concept / Approach:
In .NET, every enum type inherits from System.Enum
, which inherits from System.ValueType
. Therefore, all enums are value types. Value types are typically stored inline (e.g., on the stack or inside containing objects) and copied by value semantics.
Step-by-Step Reasoning:
System.Enum : System.ValueType : System.Object
.Because they derive from ValueType
, they are value types by definition.
Verification / Alternative check:
Reflect any enum in code and inspect typeof(MyEnum).IsValueType
which returns true
. IL disassembly also shows the inheritance tree.
Why Other Options Are Wrong:
Reference type is incorrect; enums are not classes. Size or project settings do not alter type category, and you cannot programmatically switch a type from value to reference.
Common Pitfalls:
Confusing enums with classes or assuming large enums might be treated as references. The category is fixed by the CLR type system.
Final Answer:
enum is a value type.
Discussion & Comments