58

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

4

4 回答 4

95

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

所以如果你有一个枚举Foo并且你想要一个可以为空的属性,你需要属性类型是Foo?.

于 2013-01-28T11:48:16.763 回答
14

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

于 2013-01-28T11:50:25.553 回答
4

假设我们有枚举

public enum eCategory
{
    health ,        
    Weapon
}

和一种电子类别,例如:-

eCategory currentcategory;

那么 currentcategory 是值类型

于 2018-06-20T09:17:07.140 回答
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);→三

一个很棒的 cSharp 在线工具 => http://csharppad.com/

于 2016-06-26T18:45:46.117 回答