C#:我需要什么`using`语句?

时间:2010-02-09 02:36:30

标签: c# xna

我在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重命名为更简洁的内容吗?

3 个答案:

答案 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