C#指令&名称空间问题

时间:2009-12-17 09:11:56

标签: c# class namespaces

我这里有问题。我有类库,即 ClLib ,并且包含以下 8 cs 文件。

  • Express (父类)
            - 1E1
            - 1E2
            - 1E3

  • 普通(父母班)
            - 1N1
            - 1N2
            - 1N3

此外,每个8类文件中还包含一个方法。例如,

public class 1E1:Express
{
    public int subtractNumExp1E1(int firstNum, int secNum)
    {
        return firstNum - secNum;
    }
}

1E1:Express用于显示父类(Express)和子类(1E1)之间的关系。

我还在Visual Studio中创建了一个Windows应用程序,我需要创建一个像“使用ClLib.Express.1E1”这样的指令。我该怎么办呢?我陷入这种情况,当我想将1E1的命名空间从“命名空间ClLib”更改为“命名空间ClLib.Express.1E1”时。发生错误,因为命名空间ClLib已经包含Express的一个定义。

对所有愿意帮助我的善良灵魂提前表示感谢和赞赏:)

3 个答案:

答案 0 :(得分:2)

您不能拥有同名的类型和命名空间(“CILib.Express”)。

如果您想要CILib.Express命名空间,最简单选项是移动/重命名CILib.Express类型。

但是,您也可以使用嵌套类型。例如,您可以:

namespace CILib {
    public class Express {
        public class SomeType {}
    }
}

如果需要关注单独的文件:

文件1:

namespace CILib {
    public partial class Express { 
        // "Express" code
    }
}

文件2:

namespace CILib {
    public partial class Express {
        public class SomeType {
            // "SomeType" code
        }
    }
}

但是,using指令仅与命名空间有关;我认为你不能拥有using CILib.Express,因为这不是命名空间。

答案 1 :(得分:1)

在这种情况下,您只需删除命名空间ClLib,并确保只有ClLib.Express.1E1的一个副本

P / S:您确定正确的命名空间是ClLib.Express.1E1吗? 1E1是一个cs文件,它通常是一个类。所以你不必写using ClLib.Express,这就足够了。

答案 2 :(得分:0)

我认为命名空间和基类之间存在混淆。

命名空间:ClLib.Express 类:公共类1E1:快递

将您的基类重命名为ExpressBase以区分它。

如果需要引用命名空间:

使用ClLib.Express

希望我理解你的项目结构!