1
假设我们有两个具有不同名称空间的项目。为什么C#不会在不明确的名称空间上抛出错误?
using Models = SharedClasses;
namespace MainAspNetMvcApplication{
private void Method1(){
var c = new Models.Cat();
//Error CS0234 The type or namespace name 'Cat' does not exist in the namespace 'MainAspNetMvcApplication.Models' (are you missing an assembly reference?)
}
}
namespace MainAspNetMvcApplication.Models{
//There is no class `Cat` in this namespace
public class Dog {
...
}
...
}
我已经添加了对SharedClasses
的引用,其中包含以下代码。
namespace SharedClasses{
public class Cat{
//The code for shared classe (Cat)
}
}
这更像是一个模棱两可的Models
错误。但是,C#假定当前项目Models
命名空间并抛出CS0234
错误。
为什么默认为C#假设当前项目Models
命名空间,而我已经提到使用Models
为SharedClasses
?
对于我来说,最应优先考虑using Models = SharedClasses;
不应该至少C#让我知道我有两个暧昧Models
而不是选择一个?
只是好奇为什么C#这样设计。虽然我正在寻找语言设计师来回答任何其他相关的答案是值得欢迎的。
你包括你的命名空间或在某处放置一个程序集引用? <我不明白我> – devRicher
@devRicher我已经添加了参考,它也包含在'using Models = SharedClasses;' –
如果你不使用Models = SharedClasses? – mayu