Enum-ссылочный тип или тип значения?

Я использовал свойство Enum в моем EntityFramework 5 класс , но в базе данных это поле является пустым. Visual studio выдает ошибку, что это свойство должно быть свойством nullable. Мой вопрос: Является ли Enum ссылочным типом или типом значения?

4 ответов


System.Enum является ссылочным типом, но any конкретные тип enum-это тип значения. Точно так же,System.ValueType является ссылочным типом, но все типы наследования от него (кроме System.Enum) являются типами значений.

Итак, если у вас есть перечисление Foo и вы хотите свойство nullable, вам нужно, чтобы тип свойства был Foo?.


Если у вас myEnum.SomeValue Это будет тип значения.


public enum TestReferenceOrValue
{
    one, two, three    
}
var a = TestReferenceOrValue.one;
var b = a;
b = TestReferenceOrValue.three;

если перечисления по ссылке, меняется b влияет a
Console.Write(a); → один
Console.Write(b); → три

отличный онлайн-инструмент для cSharp =>http://csharppad.com/


предположим, у нас есть перечисление

public enum eCategory
{
    health ,        
    Weapon
}

и типа eCategory, таких как :-

eCategory currentcategory;

тогда currentcategory имеет тип значения