命名空间和子命名空间以及它们在C#中引用的库

时间:2010-06-09 20:10:34

标签: c# namespaces

我可以

吗?
namespace somenamespace
{
//references functionality in DLL_1
      namespace somesubnamespace
      {
       //references functionality in DLL_2
      }
}

如果我这样做,当我只使用somenamespace时,它是否只在解决方案中包含DLL_1,如果我使用somenamespace.somesubnamespace,它会在解决方案中包含DLL_1和DLL_2吗?

或者在包含命名空间的项目上设置DLL_1和DLL_2,无论我使用哪个DLL,都会复制这两个DLL?

3 个答案:

答案 0 :(得分:2)

您只需要添加对代码实际使用的DLL的引用(直接或间接)。

因此,如果库X有两个分别引用库A和B的类,并且您只使用引用库A的类,则根本不需要库B.

命名空间是组织概念,与其无关。

答案 1 :(得分:1)

如果添加对DLL的引用,则会复制它们。由于您必须添加引用才能使用它们,因此将始终复制它们。

答案 2 :(得分:1)

上面的代码完全等同于:

namespace.somesubnamespace
{

}

如果您按自己的方式编写,或者以这种方式编写,则在代码中访问somesubnamespace的方式完全相同。

命名空间基本上只是用于组织代码的标签。根据您的代码访问的内容将决定您需要哪些引用 - 但您的问题的答案是“否”,namespace的引用不一定是必需的。在这方面,namespace.somesubnamespace是一个独立的命名空间。