我可以访问枚举而无需输入枚举类型吗?

时间:2014-04-30 13:51:25

标签: c#

Enum EventType = {Click, Jump, Etc};

而不是像这样访问它:

EventType.Jump
如果没有“EventType”,有没有办法这样做。前缀?

Jump

4 个答案:

答案 0 :(得分:5)

不,但如果你真的想要,你可以在你的课堂上使用本地参考:

class A
{
   private EventType Jump = EventType.Jump;


   if(actionEvent.Type == Jump)......
}

答案 1 :(得分:1)

其实没有。在C ++中,这实际上是一个长期的痛苦,因为在C ++ 11(没有解决方法)之前不可能使用范围的枚举

对于C#,你不能这样做,因为这可能会引入名称冲突,例如:

Enum EventType1 = {Click, Jump, Etc};
Enum EventType2 = {Click, Jump, Etc};

现在应该使用哪个Jump

答案 2 :(得分:1)

简答:否。您不能在使用EnumType.

时使用枚举成员

而不是Enum您可以定义const int Jump = 1,然后相应地编码,

为什么你想要这样的东西?

考虑使用enums而不是const,它将提高可读性。

答案 3 :(得分:1)

正如其他答案所述,你不能在C#中省略枚举前缀,但是,如果目标是防止必须输入长枚举名称(尽管intellisense解决了这么多),或者保留更短的代码,你可以通过在顶部的using子句中放置别名来使用替代方法。 (虽然这只在特定班级内有效) e.g。

using s = SomeLongEnumerationNameYouDontWantToSee;
...
if(foo == s.Bar) ..

或现实世界的枚举:

using ds = System.Drawing.Drawing2D.DashStyle;
...
ds.Solid