2010-06-09 127 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正好做在你的代碼是相同的: