枚举是参考类型还是值类型?

时间:2013-01-28 11:46:42

标签: .net enums value-type reference-type

我在EntityFramework 5课程中使用了Enum属性, 但在数据库中,此字段可以为空。 Visual Studio提供了此属性必须是可空属性的错误。我的问题是:Enum是引用类型还是值类型?

4 个答案:

答案 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;

然后当前类别属于值类型