假设我们有两个具有不同命名空间的项目。
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#这样设计。虽然我正在寻找语言设计师来回答任何其他相关的答案,但欢迎。
答案 0 :(得分:2)
别名不同。
using Models = SharedClasses;
现在Models
是一个别名而不是命名空间,所以它不是一个空间命名空间,有多个规则概述你可以在这里找到它们的别名行为: