更新 : 2007 年 11 月
入れ子にされた型とは、他の型のメンバである型です。入れ子にされた型はその宣言型と密に結合されているため、汎用型としては使用できません。入れ子にされた型は、開発者に混乱を招くことがあるため、特別な理由がない限り、パブリックに参照可能にすることはお勧めできません。適切にデザインされたライブラリでは、入れ子にされた型を使ってオブジェクトをインスタンス化したり、変数を宣言したりすることが必要になることはほとんどありません。
入れ子にされた型は、宣言型で、入れ子にされた型のインスタンスを使用したり作成したりする場合に便利で、入れ子にされた型の使用はパブリック メンバに公開されません。
入れ子にされた型とその外部の型の関係においてこのようなメンバ アクセシビリティ セマンティクスが必要な場合は、入れ子にされた型を使用してください。
入れ子にされた型はその宣言型のメンバとして扱われるため、宣言型の他のすべてのメンバにアクセスできます。
入れ子にされた型が宣言型の外部で参照される可能性がある場合は、入れ子にされた型を使用しないでください。
一般的なシナリオでは、入れ子にされた型の変数の宣言とオブジェクトのインスタンス化は必要ありません。たとえば、クラスで定義されたイベントを処理するイベント ハンドラ デリゲートは、クラスで入れ子にしないでください。
入れ子にされた型をクライアント コードでインスタンス化する必要がある場合は、入れ子にされた型を使用しないでください。型にパブリック コンストラクタが存在する場合、入れ子にはしません。
入れ子にされた型は、その宣言型でのみインスタンス化し、使用するのが理想的です。入れ子にされた型にパブリック コンストラクタが存在する場合、この型には、その宣言型とは別個の用途があることを示しています。通常、入れ子にされた型は、その宣言型以外の型に対するタスクを実行できません。型に広範な用途がある場合、入れ子にはしません。
入れ子にされた型をインターフェイスのメンバとして定義しないでください。このような構成要素は、多くの言語でサポートされていません。
Portions Copyright 2005 Microsoft Corporation.All rights reserved.
Portions Copyright Addison-Wesley Corporation.All rights reserved.
デザイン ガイドラインの詳細については、2005 年に Addison-Wesley から出版されている Krzysztof Cwalina、Brad Abrams 共著の『Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries』を参照してください。