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

44 .net enums value-type reference-type

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

Jon*_*eet 77

System.Enum是一种引用类型,但任何特定的枚举类型都是值类型.同样,它System.ValueType是一个引用类型,但是从它继承的所有类型(除了System.Enum)都是值类型.

因此,如果您有一个枚举Foo并且您想要一个可为空的属性,那么您需要属性类型Foo?.

  • 值得注意的是`Foo?`是`System.Nullable <Foo>`的糖,而`Nullable`也是一个值类型. (7认同)

fhn*_*eer 11

如果你这样做myEnum.SomeValue将是一个值类型.


Ekl*_*yaa 5

假设我们有枚举

public enum eCategory
{
    health ,        
    Weapon
}
Run Code Online (Sandbox Code Playgroud)

以及一种 eCategory,例如:-

eCategory currentcategory;
Run Code Online (Sandbox Code Playgroud)

那么 currentcategory 是值类型