lal*_*ala 32 .net c# enums global-variables
这可能是一个愚蠢的问题,但我似乎无法做到这一点.我想在一个类中设置一些枚举,如下所示:
public enum Direction { north, east, south, west };
Run Code Online (Sandbox Code Playgroud)
然后让所有类都可以访问该枚举类型,以便其他类可以例如:
Direction dir = north;
Run Code Online (Sandbox Code Playgroud)
并能够在类之间传递枚举类型:
public void changeDirection(Direction direction) {
dir = direction;
}
Run Code Online (Sandbox Code Playgroud)
我认为将枚举设置为public会使其自动成为可能,但是在我声明枚举的类之外它似乎并不可见.
Chr*_*lor 52
你可以做两件事之一.
1-在类之外移动枚举的声明
今天你可能有这样的事情
public class ClassName
{
public enum Direction
{
north, south, east, west
}
// ... Other class members etc.
}
Run Code Online (Sandbox Code Playgroud)
哪个会改为
public class ClassName
{
// ... Other class members etc.
}
// Enum declared outside of the class
public enum Direction
{
north, south, east, west
}
Run Code Online (Sandbox Code Playgroud)
2-使用类名引用枚举
ClassName.Direction.north
Run Code Online (Sandbox Code Playgroud)
例如.
public void changeDirection(ClassName.Direction direction) {
dir = direction;
}
Run Code Online (Sandbox Code Playgroud)
ClassName您声明枚举的类的名称在哪里.
aba*_*hev 14
在类之类的命名空间中声明枚举,而不是在类中:
namespace MyApplication
{
public enum Direction { north, east, south, west };
}
Run Code Online (Sandbox Code Playgroud)
如果枚举是在类的范围内声明的,那么您也将此类设为public:
namespace MyApplication
{
public class MyClass
{
public enum Direction { north, east, south, west };
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
MyClass.Direction dir = ...
Run Code Online (Sandbox Code Playgroud)
它是公共的,但在类内定义枚举使其成为该类的内部类型。例如:
namespace MyNamespace
{
public class Foo
{
public enum MyEnum { One, Two, Three }
}
}
Run Code Online (Sandbox Code Playgroud)
为了从MyNamespace命名空间中的另一个类访问此枚举,您必须将其引用为Foo.MyEnum,而不仅仅是MyEnum。如果您想简单地引用它MyEnum,请在命名空间内而不是在类内声明它:
namespace MyNamespace
{
public class Foo { ... }
public enum MyEnum { One, Two, Three }
}
Run Code Online (Sandbox Code Playgroud)