入れ子にされた型 (C# プログラミング ガイド)
更新 : 2007 年 11 月
クラスや構造体の中で定義された型は、入れ子にされた型と呼ばれます。次に例を示します。
class Container
{
class Nested
{
Nested() { }
}
}
外側の型がクラスまたは構造体のいずれであっても、入れ子にされた型は既定で private になりますが、public、protected internal、protected、internal、または private にすることもできます。上の例の Nested は、外部の型からアクセスできませんが、次のように public にもできます。
class Container
{
public class Nested
{
Nested() { }
}
}
入れ子にされた型 (内側の型) は、包含する型 (外側の型) にアクセスできます。包含する型にアクセスするには、その型を入れ子にされた型にコンストラクタとして渡します。次に例を示します。
public class Container
{
public class Nested
{
private Container parent;
public Nested()
{
}
public Nested(Container parent)
{
this.parent = parent;
}
}
}
入れ子にされた型は、継承されたプライベート メンバとプロテクト メンバを含む、包含する型のプライベート メンバとプロテクト メンバにアクセスできます。
上記の宣言では、クラス Nested の完全名は Container.Nested です。これは、次のように入れ子になったクラスの新しいインスタンスを作成するときに使用される名前です。
Container.Nested nest = new Container.Nested();