【发布时间】:2011-08-15 22:03:36
【问题描述】:
我正在为自己创建一个包含在单个项目中的小型数学库,并且遇到了命名空间的一些问题。我有项目MyMathLib 和顶级命名空间:
namespace MyMathLib
{ ... }
在一个单独的文件中......
namespace MyMathLib.Addition
{ ... }
还有……
namespace MyMathLib.Subtraction
{ ... }
在MyMathLib.Subtraction 命名空间中,我有一个方法需要使用MyMathLib.Addition 中定义的静态方法SomeClass.Work(),因此我在减法文件的开头包含了using MyMathLib.Addition。但是当我尝试使用该方法时,我希望我首先使用Addition.SomeClass.Work() 对其进行限定,并且我希望能够只输入SomeClass.Work()。我做错了什么?
谢谢!
编辑
感谢您的建议!在每个文件中,我实际上在命名空间之后命名了类(即在命名空间MyMathLib.Addition 中是一个静态类Addition 而在MyMathLib.Subtraction 中有一个静态类Subtraction)。显然这是导致问题的原因(回头看,我应该说明这一点而不是使用SomeClass)。如果我将命名空间更改为MyMathLib.MyAddition,同时将静态类保持为Addition,using MyMathLib.MyAddition 可以按我的意愿工作;也就是说,我现在可以在我的静态 Subtraction 类中输入 Addition.Work()。我以前见过与包含命名空间相同的类,有人可以解释为什么这会导致问题吗?编译器不应该能够从代码的上下文中确定我是要使用命名空间还是类?
【问题讨论】:
-
方法名称是否与您引用的另一个命名空间中的另一个方法冲突?
-
也许您在两个命名空间中为 SomeClass 和 Work() 使用相同的名称?
-
Work是SomeClass的成员吗?此外,SomeClass是否在MyMathLib.Addition和MyMathLib.Subtraction中都定义了?
标签: c# namespaces project