Я использовал свойство Enum в классе EntityFramework 5, но в базе данных это поле имеет значение NULL. Visual studio дает ошибку, что это свойство должно быть свойством nullable. Мой вопрос: есть ли перечисляемый тип ссылки или тип значения?
Enum - ссылочный тип или тип значения?
Ответ 1
System.Enum
является ссылочным типом, но любой конкретный тип перечисления является типом значения. Точно так же System.ValueType
является ссылочным типом, но все типы, наследующие его (кроме System.Enum
), являются типами значений.
Итак, если у вас есть enum Foo
и вы хотите свойство nullable, вам нужно, чтобы тип свойства был Foo?
.
Ответ 2
Если вы выполните myEnum.SomeValue
, это будет тип значения.
Ответ 3
public enum TestReferenceOrValue
{
one, two, three
}
var a = TestReferenceOrValue.one;
var b = a;
b = TestReferenceOrValue.three;
Если перечисления являются ссылочными, изменение b
влияет на a
Console.Write(a);
→ один Console.Write(b);
→ three
отличный онлайн-инструмент для cSharp = > http://csharppad.com/