Visual Studio にフォルダーがあり、その中にクラスを作成すると、Visual Studio (および場合によっては他の IDE) によって、そのフォルダーから作成されたファイルの名前空間にフォルダーの名前が自動的に追加されます。
これは、名前空間がそのままである必要があるという意味では決してありません。「フォルダ」は純粋に整理用であり、コードのコンパイルには関与しません。ファイル名も実際のコードには関係ありません。Apples.cs を見ると、次のように変更するだけです。
namespace Apples.Apples
{
//....
に
namespace Apples
{
//...
これは単に、IDE が必要なものに対する仮定として使用している規則です。それに従う必要はありません。
編集:少なくとも、フォルダー名に焦点を合わせているため、ここで誤解していると思います-これはコードには何の意味もなく、あなたにとってのみ重要です。さらに、前述のように、名前空間名とクラス名の間のあいまいさに悩まされる場合があります。他の回答で述べたように、クラスに名前空間と同じ名前を付けることはお勧めできません。
デフォルトでは、プロジェクトのグローバル名前空間はプロジェクトと同じ名前になります。したがって、プロジェクトに「Apples」という名前を付けてから、「Apples」というフォルダーを作成し、そのフォルダー内に「Apples」というクラスを作成した場合、名前空間のチェーンに従ってクラスに移動します。
Apples.Apples.Apples
フォルダー/ファイル名に基づいてこれを行う必要があるという結論を導き出していますが、実際には名前空間/クラスです。ここにはいくつかのオプションがありますが、最終的には、混乱と混乱を取り除くために、これらの「りんご」の 2 つまたは 3 つすべてを変更する必要があります。ファイル名やフォルダ名を変更しても機能しません。クラス名と少なくとも 1 つの名前空間名を変更する必要があります。より適切なもの:
AppleProject.Apples.AppleBase
または次のように簡単です:
Apples.Apple // removed the extra namespace in the middle