我在MS Visual Studio 2008 Pro中有一个项目。我是环境和语言的新手,所以请原谅一个愚蠢的问题。
我有一个类型ControlCode
:
namespace ShipAILab
{
public abstract class ControlUnit {
public enum ControlCode {
NoAction = 0x00,
MoveLeft = 0x01,
MoveUp = 0x02,
MoveRight = 0x04,
MoveDown = 0x08,
Fire = 0x10,
}
}
}
我希望可以从另一个类BoardUtils
访问它,该类位于同一个ShipAILab
命名空间中:
public static IList<ControlUnit.ControlCode> pathToPoint(IDictionary<CompPoint, int> dist, CompPoint destination) {
ControlUnit.ControlCode code = ControlUnit.ControlCode.MoveLeft; // works
ControlCode c2 = ControlCode.MoveDown; // how do I get this to work?
}
为什么不通过共享命名空间自动工作?我需要using
声明吗?我可以像在C中一样“输入”以将ControlUnit.ControlCode
重命名为更简洁的内容吗?
答案 0 :(得分:5)
您的枚举 ControlUnit
类。
如果您希望在不输入类名的情况下访问它,请将该枚举移到该类之外。
答案 1 :(得分:4)
将枚举移到课堂外。
namespace ShipAILab
{
public enum ControlCode {
NoAction = 0x00,
MoveLeft = 0x01,
MoveUp = 0x02,
MoveRight = 0x04,
MoveDown = 0x08,
Fire = 0x10,
}
public abstract class ControlUnit {
}
}
答案 2 :(得分:1)
如果它们位于同一名称空间中,则不应该使用using语句。
它们是否在同一个dll中(VS2008下的同一个项目)。如果没有,那么您需要将pathToPoint
dll中的引用添加到声明ControlUnit
的引用。您可以通过在解决方案资源管理器中查找项目,右键单击它并选择“添加引用...”来完成此操作。
如果显示的代码实际上是编译的,并且您想要这样做,那么您不必在整个地方键入ControlUnit.XYZ
,那么您需要将枚举的声明移到外面 ControlUnit
类