如果您在visual studio中有一個文件夾並在其中創建一個類,Visual Studio(可能還有其他IDE)會自動將該文件夾的名稱追加到從該文件夾創建的任何文件的名稱空間中。
這並不意味着以任何方式命名空間必須保持這種方式。 「文件夾」純粹是爲了組織目的,並不參與編譯代碼。文件名與實際代碼無關。如果您在Apples.cs看起來只是改變:
namespace Apples.Apples
{
//....
到
namespace Apples
{
//...
它只是你的IDE使用作爲假設你想要什麼規則。你不需要遵循它。
編輯:至少這是我認爲這裏的誤解,因爲你正在關注文件夾名稱 - 這意味着沒有代碼,只對你很重要。另外,如前所述,您可能會掛在名稱空間名稱和類名稱之間的歧義之處。正如其他答案中所提到的,將類命名爲命名空間是個不錯的主意。
默認情況下,項目的全局名稱空間將與您的項目名稱相同。因此,如果您將項目命名爲「蘋果」,然後創建一個名爲「蘋果」的文件夾並在該文件夾中創建一個名爲「蘋果」的類 - 然後您將通過以下命名空間鏈導航到您的類:
Apples.Apples.Apples
你得出的結論是你必須根據文件夾/文件名來做到這一點,但它確實是名稱空間/類。你有幾個選擇,但底線是爲了消除混亂和混亂2或全部3這些「蘋果」需要改變。更改文件名或文件夾名稱將不起作用。您必須更改類名稱和至少一個名稱空間名稱。更合適些:
AppleProject.Apples.AppleBase
甚至就這麼簡單:
Apples.Apple // removed the extra namespace in the middle
*不要將其命名類一樣,它的命名空間* http://blogs.msdn.com/b/ericlippert/ archive/2010/03/09/do-not-name-a-class-the-same-as-its-namespace-part-one.aspx – asawyer
它必須關注的命名空間而不是文件夾名稱。 (儘管默認情況下它們是相同的) – heisenberg