ごく最近まで、通常のクラスと内部クラス/サブクラスの間に違いがあることを気にしていませんでした。
内部クラスのインスタンスとそれを含むクラスのインスタンスの間の関係は何ですか?また、内部クラスの目的は何ですか?それらの違いは何ですか?
ごく最近まで、通常のクラスと内部クラス/サブクラスの間に違いがあることを気にしていませんでした。
内部クラスのインスタンスとそれを含むクラスのインスタンスの間の関係は何ですか?また、内部クラスの目的は何ですか?それらの違いは何ですか?
Java とは異なり、C# - 含まれるクラスは入れ子になっています。包含クラスのインスタンスと包含クラスのインスタンスの間には関係がありません。含まれているクラスは、含まれているクラスのアクセシビリティを制御し、名前空間の汚染を回避するために C# で使用されます。
(一部の企業では、各クラスを独自のファイルに入れる必要があるというコーディング標準があります。含まれるクラスは、小さなクラスの場合の回避策です。)
Java では、内部クラスのインスタンス (オブジェクト) は外部クラスへのポインターを持ちます。イベントなどを処理するために多くの小さなクラスを使用するため、これは Java で行われました。C# にはそのためのデリゲートがあります。
(包含クラスは、誰もが好む Java の実験的な理想の 1 つでしたが、時の試練を真に証明するものではありませんでした。C# がかなり後に登場したため、うまく機能しなかったことを Java から学ぶことができました)
.NET には Java のような内部クラスはありません。ネストされたクラスがあります。
それらを使用する理由は、クラスのアクセシビリティを制御するためです。
C# では、通常のクラスと内部クラスの間に少なくとも 3 つの違いがあり、内部クラスとそれを含む外部クラスの間に関係を形成することもできます。
C# - 含まれているクラスがネストされています。包含クラスのインスタンスと包含クラスのインスタンスの間には関係がありません。