C# 我可以访问枚举而不必键入枚举类型吗?

C# 我可以访问枚举而不必键入枚举类型吗?,c#,C#,而不是像这样访问它: Enum EventType = {Click, Jump, Etc}; 没有“EventType.”前缀,有什么方法可以这样做吗 其实不是。在C++中,这实际上是颈部的长期疼痛,因为范围内的枚举是不可能的,直到C++ 11(没有处理区) 对于C#您不能这样做,因为这可能会导致名称冲突,例如: Jump 现在应该使用哪个Jump?否,但如果确实需要,可以使用类中的本地引用: Enum EventType1 = {Click, Jump, Etc}; Enum Event

而不是像这样访问它:

Enum EventType = {Click, Jump, Etc};
没有“EventType.”前缀,有什么方法可以这样做吗


其实不是。在C++中,这实际上是颈部的长期疼痛,因为范围内的枚举是不可能的,直到C++ 11(没有处理区)

对于C#您不能这样做,因为这可能会导致名称冲突,例如:

Jump

现在应该使用哪个
Jump

否,但如果确实需要,可以使用类中的本地引用:

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

简短回答:否。您不能将枚举成员与使用
EnumType一起使用。

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

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


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

正如其他答案所述,您不能在C#中省略枚举前缀,但是,如果目标是避免键入长的枚举名称(尽管intellisense解决了很多问题),或者保留较短的代码,您可以使用另一种方法,将别名放在using子句的顶部。(尽管这仅在该特定类中有效) e、 g

或真实世界的枚举:

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

有人可能会说,这取决于变量或参数的类型,例如,
eventtype1type=…
,但我不确定这是否成立
class A
{
   private EventType Jump = EventType.Jump;


   if(actionEvent.Type == Jump)......
}
using s = SomeLongEnumerationNameYouDontWantToSee;
...
if(foo == s.Bar) ..
using ds = System.Drawing.Drawing2D.DashStyle;
...
ds.Solid