4

私は Java 出身で、Java のパッケージが非常に便利であることを知りました。クラスを別のパッケージに移動すると、自動的にパッケージが変更されます。(もちろん、Eclipse や Netbean などの IDE による)

しかし、C# は名前空間を使用しており、Java のように名前空間の名前が自動的に変更されることはありません。たとえば、名前空間が であるファイルがありcom.app、それを に入れましたcom.appが、後でこのファイルをcom.libフォルダーに移動しても、その名前空間は のままですcom.app。そのため、手動で移動しているため、これを管理するのは難しいと思います。

問題を解決する方法を教えてください。(そのファイルの名前空間は、含まれるフォルダーによって名前が付けられ、他の場所に移動すると、自動的に変更されます)。私たちはそれを行うことができますか?

4

2 に答える 2

6

Resharperという IDE プラグインを使用して問題を修正します。(多くの便利な機能の中でも) 名前空間が間違っている場合 (フォルダー階層とアセンブリのルート名前空間に基づいて) を強調表示し、それを修正できます。

Java とは異なり、クラスがディレクトリ構造によって推測される名前空間以外の名前空間にあるのには、非常に正当な理由がある場合があることに注意してください。良い例は、呼び出し元のクラスのスコープ内にある必要がある拡張メソッド クラスです。したがって、次のことが一般的です。

/myProject
  /extensions
     /MyExtensionMethodClass.cs

のような名前空間でmyProject(拡張メソッドを myProject のどこでも using ディレクティブなしで使用できるようにするため)

于 2012-05-18T04:20:27.813 に答える
2

それは実際には、C# には部分クラスの概念があるためです。つまり、C# クラスを Java のように 1 つのファイルにコーディングするだけでなく、複数のファイルに分散させることができます。そのため、.Net の名前空間は、名前空間またはオペレーターによって定義される集中型コンテナーではなく、分散型コンテナーです。

于 2012-05-18T04:21:10.360 に答える