.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以创建内部类时,您将开始循环。
-
Field
有一个名为FieldA
的公共嵌套类 -
FieldA
inheritance自Field
- 因此,您始终可以从
FieldA
访问FieldA
。
引用不是创建无限链,它只是指向同一个类。 ( 一些测试代码 )
当您访问FieldA.FieldA
,后一个FieldA
是可访问的,因为前一个FieldA
是Field
一个实例,因此后一个FieldA
实际访问Field.FieldA
FieldAinheritance了对FieldA类的引用,它inheritance了对FieldA类的引用,该类inheritance了对FieldA类的引用,类FieldAinheritance了对类FieldA的引用,类FieldAinheritance了对类FieldA的引用,类FieldAinheritance了类FieldA的引用。 …
这是有效的,因为这是你告诉它做的。