2010-06-09 106 views
0

我能有命名空间和子命名空间和库它们引用在C#

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都将被复制?

+0

值得注意的是,我从来没有需要以这种方式嵌套命名空间,也没有见过这样做的库,包括BCL。相反,命名空间通过它们的命名约定嵌套,如在'Namespace.SubNamespace.SubSubNamespace'中。但也许我错过了这一点。 – 2010-06-09 20:16:51

回答

1

您的代码上面是完全等价。

命名空间本质上就是标签来组织你的代码。根据您的代码访问的内容会决定您需要的引用 - 但您的问题的答案是“否”,则不一定需要namespace的引用。在这方面,namespace.somesubnamespace是一个独立的命名空间。

1

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

+0

错了。如果您从不使用它,则不需要添加对间接依赖项的引用。 – SLaks 2010-06-09 20:16:25

+0

@Slaks - 我的理解是,他问是否使用名称空间会影响将DLL复制到输出目录。 – Oded 2010-06-09 20:19:12

2

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

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

命名空间是组织的概念,与它无关。如果你写你的方式

namespace.somesubnamespace 
{ 

} 

,或者如果你把它写这种方式,访问somesubnamespace正好做在你的代码是相同的: