繁体   English   中英

静态枚举类成员

[英]Static enum class member

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

public enum MyEnum 
{
    Add,
    Remove
}

public class MyClass 
{
    private static MyEnum _myEnum;


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

这样可以吗?

我强烈建议将属性也设为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即使我只设置了一个。

如果在上面将其设置为静态,则什至不会编译,这是一件好事。

您需要通过类名使用该属性,该名称清楚地表明它是静态属性:

MyClass.Enum = MyEnum.Remove;

也将属性定义为static

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

假设您只能通过创建的MyClass对象访问它,这是完全好的。 如果希望能够在没有实例化对象的情况下设置或获取Enum,则IE就像_myEnum一样将Enum设为单例,则应将其声明为静态。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM