我是一位Java開發人員,完全不熟悉C#。我目前正在編寫一個用於在我的組織中分發的DLL。它是一個非常簡單的庫,包含了幾個類,我沒有看到任何真正的用途,只是爲了它而將它們全部放入某個名稱空間。我真的必須使用命名空間嗎?如果是這樣,爲什麼?這是一種最佳做法嗎?關於C#的基本問題 - 我需要一個命名空間嗎?
回答
你需要一個嗎? 應該你有嗎?是。它將有助於防止與其他名稱空間中的同名命名類的衝突,而不必訴諸於(IMHO)醜陋的使用global::
。
此外,這個概念很容易掌握和實現,所以沒有真正的理由來避免命名空間。 – Raveline 2010-09-20 10:37:57
對於一次性測試應用程序(例如檢查Stack Overflow答案),我不使用命名空間。對於什麼別的,我知道。這只是一個組織的事情 - 如果您要重用代碼,將其與其他代碼分開,這些代碼在同一個上下文中也可以重用。我的意思是,如果您使用LibraryX和LibraryY創建應用程序,則可以在應用程序內區分它們,這很有用。例如,它們可能都使用相同的類名 - 如果不使用名稱空間,這會使代碼變得難看。
除了其他任何東西,如果你使用Visual Studio編碼,它實際上更多的工作而不是包括一個名稱空間 - 你必須修改項目以給它一個空的默認命名空間。
沒有必要有一個命名空間。不過,開發人員工作室期望您使用名稱空間。舉例來說,當你選擇一個類添加到項目開發工作室將:
- 創建類
- 一個文件的文件添加到項目
- 創建一個空的類(在上面的文件)在項目的默認名稱空間中。
「項目的默認名稱空間」是一個開發人員工作室概念,不是C#概念,並且在項目的屬性中設置。
當你創建一個dll供他人使用,這將是您的DLL的用戶更容易很多,如果你有一個命名空間:
- 人們期待你有一個命名空間(這樣可能如果你不這樣做,可能會感到困惑)
- 如果你的類(或者枚舉等)與其它類中的類(或者枚舉類)被命名爲相同的名稱空間,那麼你的用戶會更容易。
因此,我沒有看到不使用命名空間的好理由。
不太確定「項目的默認命名空間」是否真的是僅限於工作室的功能。在從dll讀取嵌入式資源時,需要在「項目默認名稱空間」前綴其路徑。所以它也是.NET Framework中的一個概念。也許有一個很好的理由...是的,這是一個高度傑克:) – 2017-02-21 12:57:13
我對「是」的投票我認爲這是使用命名空間的好習慣。你不能確定人們不會使用相同的類名。
要回應您對有關命名類的命名空間的評論,請閱讀以下文章。
簡版:不這樣做。
基本上系統處於asp.net C#中的根名稱空間。 在.net中,每個程序都是使用默認名稱空間創建的。這個默認名稱空間被稱爲全局名稱空間。但是程序本身創建了任意數量的名字空間,每個名字空間都有唯一的名字
瞭解更多 http://asp-net-by-parijat.blogspot.in/2015/08/what-is-namespace-in-c-need-of.html
- 1. 關於javascript命名空間的問題
- 2. Fabric命名空間需要一個fabfile
- 3. C++命名空間問題
- 4. C#命名空間問題
- 5. C#命名空間問題
- 6. 需要澄清一些關於asp.net mvc的基本問題
- 7. 關於PHP命名空間的一些問題
- 8. 一些關於C++未命名的命名空間
- 9. 基於型號名稱的Rails命名空間問題
- 10. C++命名空間Noob需要幫助
- 11. 需要XSD基本幫助 - 模式中的命名空間?
- 12. 這是一個命名空間問題?
- 13. 關於WPF的一個基本問題
- 14. 在PHP的命名空間,我需要要求每個文件
- 15. 我需要一個空間索引C
- 16. C#中命名空間的問題
- 17. 奇怪的C#命名空間問題
- 18. C++的命名空間問題
- 19. C++中的命名空間問題
- 20. 我有一些關於jmeter的基本問題嗎?
- 21. WPF for visual studio 2017關於windows 10問題的命名空間多個問題
- 22. 關於C++命名約定的問題
- 23. 命名空間的問題
- 24. 命名空間的問題
- 25. 關於命名空間
- 26. 名稱空間衝突是Objective-C中的一個問題嗎?
- 27. C#XmlWriter命名空間問題
- 28. C#方法和命名空間問題
- 29. C++命名空間/標識符問題
- 30. C#XmlReader冒號問題(命名空間)
你真的需要一個包,當你用Java做這樣的事情? – Mchl 2010-09-20 10:32:57
你會在java中使用包名稱空間,但是,對嗎? – 2010-09-20 10:33:35
好的,這裏是導致我這個問題的真正問題。我嘗試將所有類放入名爲「A」的名稱空間中。主類也被命名爲'A'。有了這個,客戶端應用程序不得不將這個主類稱爲A.A,這看起來很尷尬。這在Java中不會發生,因爲在Java中,包名和類名之間有明顯的區別......沒有模棱兩可的空間......這似乎並不是C#的情況。 – Aadith 2010-09-20 10:40:58