を入れ子になったクラスは、所有者クラスもその後、パーティション何らかの理由であることが必要である場合に区分される必要があります。入れ子にされたクラスコード所有者のクラスコードでもあり、それは構成の関係です。
したがって、ネストされたクラスの一部を抽出することは、同時にその所有者の一部を抽出することを意味します。 コンパイラが完全指定型を識別できるように、それぞれの部分クラスに "フルパスを参照"する必要があります。
これは名前空間と同じです。クラスとは異なり、暗黙のうちに部分的に暗黙的に使用されています。通常はクラス、特にネストされたクラスに対して、同じファイル内に名前空間全体があるとは思われません。
ので、通常私たちは、ネストされたクラスに定義さ
MyTopNamespace.MyLevel2Namespace.MyTopLevelClass.MyNestedClassA
MyTopNamespace.MyLevel2Namespace.MyTopLevelClass.MyNestedClassB
のようなものの一部で、ファイルに記述する必要があります。サフィックス入れ子になったクラスの他の部分との
namespace MyTopNamespace
{
namespace MyLevel2Namespace
{
partial class MyTopLevelClass
{
partial class MyNestedClassA
{
// Part of definition for our nested class:
// MyTopNamespace.MyLevel2Namespace.MyTopLevelClass.MyNestedClassA
}
class MyOtherNestedClassNotPartitioned
{
...
}
partial class MyNestedClassB
{
// Part of definition for our nested class:
// MyTopNamespace.MyLevel2Namespace.MyTopLevelClass.MyNestedClassB
}
}
}
}
と、別のファイルの「 'は次のように定義されています:
namespace MyTopNamespace
{
namespace MyLevel2Namespace
{
partial class MyTopLevelClass
{
partial class MyNestedClassA
{
// Another part of definition for our nested class:
// MyTopNamespace.MyLevel2Namespace.MyTopLevelClass.MyNestedClassA
}
}
}
}
さらに、ネストされたクラスの他の部分uffixed「B」はのようなものを定義した:
namespace MyTopNamespace
{
namespace MyLevel2Namespace
{
partial class MyTopLevelClass
{
partial class MyNestedClassB
{
// Another part of definition for our nested class:
// MyTopNamespace.MyLevel2Namespace.MyTopLevelClass.MyNestedClassB
}
}
}
}
それともなど定義された両方の入れ子になったクラスの一部と他のファイルを持つことができますが、我々は常に定義されたクラス型である場合、完全に指定する必要があります。
4レベルのネストされたクラスが必要な場合は、デザインを再考することができます。 –
ネストされたクラスは便利ですが(http://stackoverflow.com/questions/1083032/why-would-i-ever-need-to-use-c-sharp-nested-classes)私は親切にも、あなたが造っているところに、ここで。 – summea
はい、リファクタリングしてください - これは良いアイデアのようには聞こえません – BrokenGlass