不需要输入枚举类名如何获取枚举?

4

我注意到在C#中,当我有一个枚举时,例如:

class ClassObject {
   public static Enum EventType = {Click, Jump, Etc};
}

当我需要访问它时,我必须通过它的主类,并且这非常冗长。例如:

ClassObject.EventType.Click

我希望可以更直接地访问它,比如使用EventType.Click就能获得它。
因此,我想尝试创建一个单独的类并从枚举类继承:
class EventType : Enum {
   Click, Jump, Etc;
}

然而,我对此得到了一个语法错误。

实际上,为此目的创建另一个单独的类有些麻烦,而且我甚至不知道这是否是一种良好的做法。但理想情况下,我希望缩短名称并可能避免在访问枚举之前必须键入类名。这可行吗?


为什么你要把枚举封装在一个类中?直接放在命名空间里不行吗? - Casper Thule Hansen
1
明确一点:您不能从枚举类继承。 - Marc Gravell
枚举不是类型吗?它们没有被定义为静态的。 - Nate-Wilkins
2个回答

10
你可以将枚举放在类的同一级别,它不必是类成员。
namespace Test
{
    public enum EventType
    {
        Click,
        Jump,
        Etc
    };

    class ClassObject { }
}

我从未将枚举标记为静态。那究竟是什么意思?如果枚举在类内或外声明,是否会有所不同? - devuxer
是的,我不知道为什么它是“静态”的,我只是复制/粘贴了。 - hunter
没有理由将 enum 声明为静态。enums 是类型。 - hunter

4
你正在类范围内定义枚举。这就是为什么你必须通过类来访问它的原因。将其定义在类外部,并从任何地方访问它。嵌套的枚举和类不可直接访问。
public static Enum EventType = {Click, Jump, Etc};

class ClassObject {

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接