我在EntityFramework 5课程中使用了Enum属性, 但在数据库中,此字段可以为空。 Visual Studio提供了此属性必须是可空属性的错误。我的问题是:Enum是引用类型还是值类型?
答案 0 :(得分:71)
System.Enum
是引用类型,但任何特定的枚举类型都是值类型。同样,System.ValueType
是引用类型,但是从它继承的所有类型(System.Enum
除外)都是值类型。
因此,如果您有一个枚举Foo
,并且您想要一个可为空的属性,那么您需要将属性类型设为Foo?
。
答案 1 :(得分:11)
如果你myEnum.SomeValue
,它将是一个值类型。
答案 2 :(得分:4)
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/
答案 3 :(得分:1)
假设我们有枚举
public enum eCategory
{
health ,
Weapon
}
和一种电子类别,例如:-
eCategory currentcategory;
然后当前类别属于值类型