静态枚举类成员

时间:2014-03-20 15:30:16

标签: c# .net

我可以将enum声明为另一个类中的静态成员吗​​? 我只想要这个枚举中的一个实例

public enum MyEnum 
{
    Add,
    Remove
}

public class MyClass 
{
    private static MyEnum _myEnum;


    public MyEnum Enum
    {
        get { return _myEnum; }
        set { _myEnum = value; }
    }
}

这样做好吗?

3 个答案:

答案 0 :(得分:3)

我强烈建议同时制作属性static,因为从非静态属性获取/设置静态字段毫无意义。

这不仅令人困惑。我会称之为乞求错误。

考虑一下:

var c1 = new MyClass { Enum = MyEnum.Add };
var c2 = new MyClass { Enum = MyEnum.Add };
c2.Enum = MyEnum.Remove;
Console.Write(c1.Enum.ToString());

您对输出的期望是什么?即使我只设置了一个实例,这两个实例现在都有MyEnum.Remove

如果你让它静态上面甚至不会编译这是一件好事。

您需要通过classname使用该属性,该属性清楚地表明它是一个静态属性:

MyClass.Enum = MyEnum.Remove;

答案 1 :(得分:1)

将您的媒体资源定义为static

public static MyEnum Enum
{
    get { return _myEnum; }
    set { _myEnum = value; }
}

答案 2 :(得分:1)

完全可以,你只能通过创建的MyClass对象访问它。如果你想能够在没有实例化对象的情况下设置或获取Enum,I.E使Enum像_myEnum一样使用单例,你应该将它声明为静态。