入れ子になった型の使用方法のガイドライン
入れ子になった型とは、別の型のスコープ内で定義された型のことです。入れ子になった型は、プライベートな状態にアクセスできるため、コレクションに対する列挙子などの型実装の詳細をカプセル化するために特に役立ちます。
パブリックな入れ子になった型は、できるだけ使用しないでください。それらを使用するのは、次の条件の両方に当てはまる場合だけです。
- 入れ子になった型 (内部の型) が、論理的に外側の型に属している場合。
入れ子になった型を使用して型を定義する方法と、使用せずに定義する方法を次に示します。
' With nested types.
ListBox.SelectedObjectCollection
' Without nested types.
ListBoxSelectedObjectCollection
' With nested types.
RichTextBox.ScrollBars
' Without nested types.
RichTextBoxScrollBars
[C#]
// With nested types.
ListBox.SelectedObjectCollection
// Without nested types.
ListBoxSelectedObjectCollection
// With nested types.
RichTextBox.ScrollBars
// Without nested types.
RichTextBoxScrollBars
次の条件に当てはまる場合は、入れ子になった型は使用しないでください。
- 型は、クライアント コードによってインスタンス化する必要があります。型がパブリック コンストラクタを持つときは、入れ子にしてはいけない可能性があります。入れ子になった型を使用しない理由は、入れ子になった型をインスタンス化できると、型はライブラリ内に独自の場所を持つことになるからです。つまり、外側の型を使用せずに、入れ子の型を作成、使用、および破棄できてしまいます。したがって、入れ子にはしないでください。外側の型との関係がない状態で、内側の型を広範囲に再利用しないでください。
- 型への参照は、通常はクライアント コードで宣言されます。