Enum is Reference Type or Value Type?
.NetEnumsValue TypeReference Type.Net Problem Overview
I used Enum property in my EntityFramework 5 class, but in the database this field is nullable. Visual studio gives the error that this property must be a nullable property. My question is: is Enum a reference type or a value type?
.Net Solutions
Solution 1 - .Net
System.Enum
is a reference type, but any specific enum type is a value type. In the same way, System.ValueType
is a reference type, but all types inheriting from it (other than System.Enum
) are value types.
So if you have an enum Foo
and you want a nullable property, you need the property type to be Foo?
.
Solution 2 - .Net
If you do myEnum.SomeValue
it will be a value type.
Solution 3 - .Net
suppose we have enum
public enum eCategory
{
health ,
Weapon
}
and a type of eCategory such as :-
eCategory currentcategory;
then currentcategory is of value type
Solution 4 - .Net
public enum TestReferenceOrValue
{
one, two, three
}
var a = TestReferenceOrValue.one;
var b = a;
b = TestReferenceOrValue.three;
If enums are by reference, changing b
affects a
Console.Write(a);
→ one
Console.Write(b);
→ three
a great online tool for cSharp => http://csharppad.com/