如果嵌套类需要为然后分配任何原因还所有者类需要被分配。嵌套类代码也是所有者类代码 - 它是一个组合关系。
因此提取嵌套类的一部分意味着同时提取其所有者的一部分。 反过来,我们需要为每个部分类“查看完整路径”,以便编译器可以识别完全指定的类型。
命名空间是一样的 - 与类不同,它们在某种程度上是隐含的,因为我们不期望在同一个文件中拥有整个命名空间,而我们通常这样做是为了类,特别是嵌套类。
所以,通常我们需要在一个文件中写入我们的嵌套类
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
}
}
}
}
,并与嵌套类的其他部分其他文件后缀“A '定义类似于:
namespace MyTopNamespace
{
namespace MyLevel2Namespace
{
partial class MyTopLevelClass
{
partial class MyNestedClassA
{
// Another part of definition for our nested class:
// MyTopNamespace.MyLevel2Namespace.MyTopLevelClass.MyNestedClassA
}
}
}
}
并在与另一部分嵌套类s的另一个文件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级嵌套类,您可能希望重新考虑您的设计。 – 2012-02-04 18:02:24
虽然嵌套类可能是有用的(http://stackoverflow.com/questions/1083032/why-would-i-ever-need-to-use-c-sharp-nested-classes)我仍然恳请建议考虑另一种方法无论你在建什么,在这里。 – summea 2012-02-04 18:02:37
是的,请重构 - 这听起来似乎不是一个好主意 – BrokenGlass 2012-02-04 18:03:24