sur*_*asb 14 c# enums namespaces class
今天,我遇到了一些像这样的代码.
namespace Foo
{
public enum Game{ High, Low};
public enum Switch{On, Off};
public class Bar()
{
// Blah
}
}
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚它与声明课堂内的枚举之间的区别是什么.AFAIK,你仍然可以"覆盖"课堂内的那些枚举.
Jor*_*dão 24
枚举是类型,就像类一样.在类中声明枚举时,它只是一个嵌套类型.嵌套的枚举只是隐藏了在外部作用域中声明的具有相同名称的其他枚举,但您仍然可以通过其完全限定名称引用隐藏的枚举(在您的示例中使用名称空间前缀).
是否声明顶级枚举或嵌套枚举的决定取决于您的设计以及这些枚举是否将被除类之外的任何其他内容使用.您还可以将嵌套枚举设为私有或受其封闭类型保护.但是,顶级枚举更为常见.
如果将枚举放在类中,则每次在类外部使用时都需要指定类名,例如:
SomeLongClassName x = new SomeLongClassName(SomeLongClassName.Game.High, SomeLongClassName.Switch.On);
Run Code Online (Sandbox Code Playgroud)
代替:
SomeLongClassName x = new SomeLongClassName(Game.High, Switch.On);
Run Code Online (Sandbox Code Playgroud)
你可以决定将ennumeration放在一个类中,如果它只被该类使用,但这种隔离只适用于类.如果您的枚举仅由单个方法使用,则不能将其放在方法中.