質問
ごく最近まで、私は通常のクラスと内部クラス /サブクラスの間に違いがあるとツイグしていませんでした。
内部クラスのインスタンスとその含有クラスのインスタンスとの関係は何ですか?また、内部クラスの目的は何ですか?
解決
Javaとは異なり、C# - 含まれるクラスはネストされています。コンテンディングクラスインスタンスと含まれるクラスのインスタンスとの間に関係はありません。含まれるクラスは、C#で使用されているだけで、含まれるクラスのアクセシビリティを制御し、名前空間を汚染しないようにします。
(一部の企業には、各クラスが独自のファイルに移動する必要があるというコーディング基準があり、クラスが含まれていることは、小さなクラスの丸い方法です。)
Javaでは、内側のクラスのインスタンス(オブジェクト)には、外側のクラスへのポインターがあります。これは、イベントなどを処理するために多くの小さなクラスを使用しているため、Javaで行われました。C#にはそのための代表があります。
(含まれるクラスは、誰もが気に入ったが時間のテストを本当に証明しなかったJavaの実験的理想の1つでした。
他のヒント
.NETには、Javaのような内部クラスがありません。ネストされたクラスがあります。
あなたがそれらを使用する理由は、クラスのアクセシビリティを制御することです。
C#では、通常のクラスと内部クラスの間に少なくとも3つの違いがあり、内側のクラスとそれを含む外側クラスの間にも関係を形成できます。
- 内部クラスは、保護、内部、保護された内部、またはプライベートとして宣言できますが、通常のクラスはできません。
- 内側のクラスは、そのクラッセの名前を使用せずに、含まれる外側クラスの静的メンバーにアクセスできます。
- 内部クラスが外側クラスのインスタンスにアクセスすると、静的でなくても、オブジェクトのプライベートメンバーにアクセスできます。
C# - 含まれるクラスはネストされています。コンタクングクラスのインスタンスと、含まれるクラスのインスタンスの間には関係はありません。
所属していません StackOverflow