每当我在C#中开始一个新项目时,我都会得到以下结果:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
为什么using System;
不允许您只使用一行的子命名空间?我正在寻找一个潜在的原因,为什么不允许这样做。在HuorSwords答案中给出的例子中:
namespace First {
class A { }
}
namespace First.Second {
class A { }
}
如果我这样做,我仍然会收到错误:
using First;
using First.Second;
function void Test()
{
A variable;
}
我仍然需要区分两者。那么为什么我被迫声明两个命名空间而不仅仅是一个?除了潜在的歧义之外,还有其他原因我们必须像这样声明每个命名空间吗?
答案 0 :(得分:1)
想想这种情况:
namespace First {
class A { }
}
namespace First.Second {
class A { }
}
如果行为可能与您的建议一致,那么当您引用First
命名空间声明using First;
句子并声明类A
的变量时,编译器如何推断出什么是你应该使用两个A
类吗?
您可以在不使用任何using
句子的情况下引用任何类型,只需在声明变量时添加完整的命名空间引用。
var firstA = new First.A();
var secondA = new First.Second.A();
然后,当您尝试导入包含同名的类的两个或多个名称空间时,编译器会引发错误,以便您可以指定应使用的类。