2010-09-20 29 views
21

我是一位Java開發人員,完全不熟悉C#。我目前正在編寫一個用於在我的組織中分發的DLL。它是一個非常簡單的庫,包含了幾個類,我沒有看到任何真正的用途,只是爲了它而將它們全部放入某個名稱空間。我真的必須使用命名空間嗎?如果是這樣,爲什麼?這是一種最佳做法嗎?關於C#的基本問題 - 我需要一個命名空間嗎?

+3

你真的需要一個包,當你用Java做這樣的事情? – Mchl 2010-09-20 10:32:57

+2

你會在java中使用包名稱空間,但是,對嗎? – 2010-09-20 10:33:35

+0

好的,這裏是導致我這個問題的真正問題。我嘗試將所有類放入名爲「A」的名稱空間中。主類也被命名爲'A'。有了這個,客戶端應用程序不得不將這個主類稱爲A.A,這看起來很尷尬。這在Java中不會發生,因爲在Java中,包名和類名之間有明顯的區別......沒有模棱兩可的空間......這似乎並不是C#的情況。 – Aadith 2010-09-20 10:40:58

回答

14

需要一個嗎? 應該你有嗎?是。它將有助於防止與其他名稱空間中的同名命名類的衝突,而不必訴諸於(IMHO)醜陋的使用global::

+2

此外,這個概念很容易掌握和實現,所以沒有真正的理由來避免命名空間。 – Raveline 2010-09-20 10:37:57

10

對於一次性測試應用程序(例如檢查Stack Overflow答案),我不使用命名空間。對於什麼別的,我知道。這只是一個組織的事情 - 如果您要重用代碼,將其與其他代碼分開,這些代碼在同一個上下文中也可以重用。我的意思是,如果您使用LibraryX和LibraryY創建應用程序,則可以在應用程序內區分它們,這很有用。例如,它們可能都使用相同的類名 - 如果不使用名稱空間,這會使代碼變得難看。

除了其他任何東西,如果你使用Visual Studio編碼,它實際上更多的工作而不是包括一個名稱空間 - 你必須修改項目以給它一個空的默認命名空間。

0

沒有必要有一個命名空間。不過,開發人員工作室期望您使用名稱空間。舉例來說,當你選擇一個類添加到項目開發工作室將:

  • 創建類
  • 一個文件的文件添加到項目
  • 創建一個空的類(在上面的文件)在項目的默認名稱空間中。

「項目的默認名稱空間」是一個開發人員工作室概念,不是C#概念,並且在項目的屬性中設置。

當你創建一個dll供他人使用,這將是您的DLL的用戶更容易很多,如果你有一個命名空間:

  • 人們期待你有一個命名空間(這樣可能如果你不這樣做,可能會感到困惑)
  • 如果你的類(或者枚舉等)與其它類中的類(或者枚舉類)被命名爲相同的名稱空間,那麼你的用戶會更容易。

因此,我沒有看到不使用命名空間的好理由。

+0

不太確定「項目的默認命名空間」是否真的是僅限於工作室的功能。在從dll讀取嵌入式資源時,需要在「項目默認名稱空間」前綴其路徑。所以它也是.NET Framework中的一個概念。也許有一個很好的理由...是的,這是一個高度傑克:) – 2017-02-21 12:57:13

0

我對「是」的投票我認爲這是使用命名空間的好習慣。你不能確定人們不會使用相同的類名。