回答:
送信元:http : //www.javacamp.org/javavscsharp/namespace.html
パッケージは、ファイルまたはパブリックタイプを整理してタイプの競合を回避するために使用されます。パッケージ構成は、ファイルシステムにマップできます。
system.security.cryptography.AsymmetricAlgorithm aa;
交換することができます:
import system.security.Crypography;
class xxx { ...
AsymmetricAlgorithm aa;
パッケージのエイリアスはありません。特定のタイプについて言及するには、importステートメントまたは完全修飾名を使用する必要があります。
package n1.n2;
class A {}
class B {}
または
package n1.n2;
class A {}
別のソースファイル:
package n1.n2;
class B {}
パッケージはネストできません。1つのソースファイルに含めることができるパッケージステートメントは1つだけです。
名前空間は、プログラムの「内部」編成システムとしても、「外部」編成システムとしても、プログラムを編成するために使用されます。
System.Security.Cryptography.AsymmetricAlgorithm aa;
交換することができます:
using System.Security.Crypography;
AsymmetricAlgorithm aa;
あるいは、名前空間のエイリアスを指定することもできます、例えば
using myAlias = System.Security.Crypography;
次にクラスを参照します
myAlias.AsymmetricAlgorithm
namespace N1.N2
{
class A {}
class B {}
}
または
namespace N1
{
namespace N2
{
class A {}
class B {}
}
}
異なる詳細がいくつかあります。
Javaでは、ディレクトリ構造はパッケージ構造と一致する必要があります。C#ではそのような制限はありません。
C#では、1つのファイルに複数の名前空間を含めることができます。Javaでは、1つのファイルが1つのパッケージに属します(前を参照)。
Javaにはデフォルト/パッケージのアクセシビリティがあります。C#の内部アクセシビリティはアセンブリに組み込まれています。
VSとEclipseを使用して、それらにプロジェクトを構築させる場合、違いはあまり感じられません。
Javaには「名前空間」などの用語はありません。ただし、名前のスコープを提供するという点では、パッケージはJavaの名前空間として機能します。アクセシビリティモデルの一部でもあります。
プログラムは、パッケージのセットとして編成されています。各パッケージには、タイプの独自の名前のセットがあり、名前の競合を防ぐのに役立ちます。最上位の型は、その型がパブリックとして宣言されている場合にのみ宣言するパッケージの外部でアクセスできます(§6.6)。
編集:わかりました、わかりました:JavaパッケージはC#名前空間に似ていますが、C#名前空間とアクセス可能性は完全に直交していますが、アクセシビリティに影響を与える点が異なります。
Javaでは、パッケージに影響を与えるクラスにさまざまなアクセス指定子を適用できます。
protected:同じパッケージおよび別のパッケージのサブクラスにアクセス可能、デフォルト:同じパッケージにアクセス可能、public:ユニバーサルにアクセス可能、private:同じパッケージからもアクセス不可能
これらのタイプのアクセス指定子は、cシャープの名前空間には適用されません。
名前空間は新しいフォルダーのようなもので、すべてのサブフォルダーはサブ名前空間です。マーケティングネームスペースの下にアドバタイズするネームスペースがあるように、ネームスペースを関数と考える場合は、marketing.advertising.adsclass.adsmethodを使用します。問題を解決するのは非常に簡単です。Javaはパッケージ経由で同じメソッドを持っていますが、新規参入者にとっては複雑です。
C#で
'' 'ネームスペースマーケティング{
class admissions{
int admissions_method(){
}
}
namespace advertising{
class advertisement{
void ad_in_newspaper( int no_of_lines){
}
void ad_on_tv(int seconds){
}
}
}
クライアントクラスで使用するには
using marketing;
using marketing.advertising;
'' 'Javaでは同じメソッドを使用します。複数のクラスを1つのパッケージにまとめ、何度も使用します。独自性を高めます。あなたは一度書いて何度も使う。1つのパッケージ内の関連クラス。何度もコーディングする必要はありません。
import system.security.crypography.AsymmetricAlgorithm;。Javaでは、パッケージではなくクラスをインポートする必要があるためです。でパッケージ内のすべてのクラスをインポートすることは可能ですが、import package.*それでもパッケージではなくクラスがインポートされます。