webdevqa.jp.net

列挙型は参照型または値型ですか?

EntityFramework 5クラスでEnumプロパティを使用しましたが、データベースではこのフィールドはNULL可能です。 Visual Studioは、このプロパティはnull値を許可するプロパティでなければならないというエラーを出します。私の質問は、列挙型は参照型ですか、それとも値型ですか?

42
user1318951

System.Enumは参照型ですが、specific enum型は値型です。同じやり方で、 System.ValueTypeは参照型ですが、それを継承するすべての型(System.Enum)は値のタイプです。

したがって、enum Fooがあり、null許容プロパティが必要な場合、プロパティタイプはFoo?

74
Jon Skeet

もしあなたがそうするなら myEnum.SomeValueそれは値型になります。

11
fhnaseer
_public enum TestReferenceOrValue
{
    one, two, three    
}
var a = TestReferenceOrValue.one;
var b = a;
b = TestReferenceOrValue.three;
_

列挙型が参照による場合、bを変更するとaに影響します
Console.Write(a);→1
Console.Write(b);→3

cSharpの優れたオンラインツール=> http://csharppad.com/

4
SAm

列挙型があるとします

public enum eCategory
{
    health ,        
    Weapon
}

および次のようなeCategoryのタイプ:-

eCategory currentcategory;

現在のカテゴリは値型です

1
Eklavyaa