Я использовал свойство Enum в своем классе EntityFramework 5, но в базе данных это поле может быть пустым. Visual Studio выдает ошибку, что это свойство должно иметь значение NULL. Мой вопрос: является ли Enum ссылочным типом или типом значения?
Enum - это ссылочный тип или тип значения?
Ответы (4)
System.Enum
— это ссылочный тип, но любой конкретный тип перечисления — это тип значения. Точно так же System.ValueType
является ссылочным типом, но все унаследованные от него типы (кроме System.Enum
) являются типами-значениями.
Итак, если у вас есть перечисление Foo
и вы хотите свойство, допускающее значение NULL, вам нужно, чтобы тип свойства был Foo?
.
person
Jon Skeet
schedule
28.01.2013
Стоит отметить, что
Foo?
является сахаром для System.Nullable<Foo>
и что Nullable
также является типом значения.
- person Jesse C. Slicer; 17.09.2014
Если вы сделаете myEnum.SomeValue
, это будет тип значения.
person
fhnaseer
schedule
28.01.2013
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/
person
SAm
schedule
26.06.2016
Я проголосовал за ваше отображение ошибочных соглашений о программировании. Поля Enum должны начинаться с заглавной буквы.
- person Krythic; 19.10.2016
Приведенный выше пример кода бесполезен, поскольку он будет действовать одинаково независимо от того, является ли
TestReferenceOrValue
ссылочным типом или типом значения. var a = "a"; var b = a; b = "b"; Console.Write(a); Console.Write(b);
показывает, что строки (и любой другой тип) действуют таким образом, а string
является ссылочным типом. Это потому, что вы переписываете переменную b, а не меняете объект, на который она указывает.
- person mjwills; 16.11.2017
предположим, что у нас есть перечисление
public enum eCategory
{
health ,
Weapon
}
и тип eCategory, такой как: -
eCategory currentcategory;
тогда currentcategory имеет тип значения
person
Eklavyaa
schedule
20.06.2018