.NET嵌套类

我正在处理的当前类库将有一个基类(Field),它有超过50种特定的“字段”类型,它们将inheritance自“Field”并嵌套以保持可读性。 例如…

abstract class Field { public int Length { get; set; } public class FieldA : Field { public static void DoSomething() { Console.WriteLine("Did something."); } } } 

到目前为止,一切看起来都很好,我可以使用如下所示的代码:

 class Program { static void Main(string[] args) { Field.FieldA.DoSomething(); } } 

但是,为什么这也有效呢? 这里发生了什么让编译器/ IDE intellisense继续链接这些“FieldA”?

 class Program { static void Main(string[] args) { Field.FieldA.FieldA.FieldA.FieldA.FieldA.FieldA.FieldA.DoSomething(); } } 

它不是以任何方式打破应用程序,但认为它是特殊的。 在Boo中做同样的事情(这是用于库的实际语言)。

听起来像你想要的东西:

 abstract class Field { public int Length { get; set; } } public class FieldA : Field { public static void DoSomething() { Console.WriteLine("Did something."); } } 

否则你要定义一个内部类的基类,inheritance者也会得到它。 因此,当您从外部类inheritance以创建内部类时,您将开始循环。

  1. Field有一个名为FieldA公共嵌套类
  2. FieldAinheritance自Field
  3. 因此,您始终可以从FieldA访问FieldA

引用不是创建无限链,它只是指向同一个类。 ( 一些测试代码 )

当您访问FieldA.FieldA ,后一个FieldA是可访问的,因为前一个FieldAField一个实例,因此后一个FieldA实际访问Field.FieldA

FieldAinheritance了对FieldA类的引用,它inheritance了对FieldA类的引用,该类inheritance了对FieldA类的引用,类FieldAinheritance了对类FieldA的引用,类FieldAinheritance了对类FieldA的引用,类FieldAinheritance了类FieldA的引用。 …

这是有效的,因为这是你告诉它做的。