2009-07-28 15 views
4

非常に最近まで、通常のクラスと内部クラス/サブクラスには違いがありました。C#の内部クラス

内部クラスのインスタンスとそれを含むクラスのインスタンスとの関係は何ですか?内部クラスの目的は何ですか/それらが異なるのですか?

答えて

15

Javaとは異なり、C#に含まれるクラスはネストされています。クラスインスタンスを含むことと、含まれるクラスのインスタンスとの間には関係がありません。包含クラスは、含まれるクラスのアクセシビリティを制御し、名前空間を汚染するのを避けるために、C#で使用されています。

(一部の企業は、クラスが含まれて、各クラスは、それ自身のファイルに行かなければならないコーディング標準をしている少人数のクラスのためのそのラウンドの方法である。)

Javaでは、内部クラスのインスタンス(オブジェクト)は、Aがあります外側のクラスにポインタを戻します。これはJavaで行われました。イベントなどを処理するために小さなクラスをたくさん使用するため、C#にはそのための代理人がいます。

(含まれているクラスは、誰もが言っていたが、本当に時間のテストを証明しなかったことをJavaで実験的な理念の一つだった。C#はたくさん後で一緒に来ると、それがうまく機能しなかったものを、Javaから学ぶことができました)

1

C# - 含まれるクラスはネストされています。 containgクラスのインスタンスと含まれるクラスのインスタンスとの間には関係がありません。

6

.NETにはJavaのような内部クラスはありません。ネストされたクラスを持っています。

あなたがそれらを使用する理由は、クラスのアクセシビリティを制御することです。

4

C#では、通常のクラスと内部クラスの間に少なくとも3つの違いがあります。内部クラスとそれを含む外部クラスの間の関係を形成することもできます。

  • 内部クラスは、保護クラス、内部クラス、保護された内部クラス、または非公開クラスとして宣言できますが、通常のクラスでは宣言できません。
  • 内部クラスは、そのクラスの名前を使用せずに、包含する外部クラスの静的メンバーにアクセスできます。
  • 内部クラスが外部クラスのインスタンスにアクセスするとき、内部クラスは静的でなくてもそのオブジェクトのプライベートメンバーにアクセスできます。
関連する問題