.NET嵌套类

时间:2009-01-18 21:28:12

标签: c# .net boo nested-class class-structure

我正在处理的当前类库将有一个基类(Field),它有超过50种特定的“字段”类型,它们将继承自“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中是否存在相同的东西(这是用于库的实际语言)。

3 个答案:

答案 0 :(得分:4)

听起来像你想要的东西:

abstract class Field
{
    public int Length { get; set; }
}

public class FieldA : Field
{
    public static void DoSomething()
    {
        Console.WriteLine("Did something.");
    }
}

否则你要定义一个内部类的基类,继承者也会得到它。所以当你继承外部类来创建内部类时,你就开始了一个循环。

答案 1 :(得分:2)

  1. Field有一个名为FieldA public 嵌套类
  2. FieldA继承自Field
  3. 因此您始终可以从FieldA访问FieldA
  4. 引用不是创建无限链,它只是指向同一个类。 (some test code

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

答案 2 :(得分:1)

FieldA继承对类FieldA的引用,该类继承对类FieldA的引用,该类继承对类FieldA的引用,该类继承对类FieldA的引用,该类继承对类FieldA的引用,该类继承对继承引用的类FieldA的引用类FieldA ......

它的作用是因为就是你告诉它的。