为什么命名空间类型不应该依赖于嵌套的命名空间类型?

在.Net命名指南( http://msdn.microsoft.com/en-us/library/893ke618(v=vs.71).aspx )中有这样的声明:

“嵌套命名空间应该依赖于包含命名空间中的类型。例如,System.Web.UI.Design中的类依赖于System.Web.UI中的类。但是,System.Web.UI中的类不依赖于System.Web.UI.Design中的类。“

我想知道为什么?

因为当你考虑它时它是有道理的。

让我用一个小例子来解释:

例如, 刀片需要一个手柄才能成为“刀”。

但手柄不需要刀片作为手柄,对吗?

 using KitchenSet; using KitchenSet.Knives; // This is where your knives (what uses Blades) would live. using KitchenSet.Knives.Blades; // The actual blades. 

这是明智的规则,因为System.Web.UI命名空间中定义的类对于System.Web.UI.Design中定义的类是可见的,但System.Web.UI.Design命名空间中定义的类对于类不可见在System.Web.UI命名空间中定义。 在后一种情况下,有必要添加using语句(在VB.NET中导入)。