C# .NET嵌套类

C# .NET嵌套类,c#,.net,boo,nested-class,class-structure,C#,.net,Boo,Nested Class,Class Structure,我正在处理的当前类库将有一个基类(Field),其中包含50多个特定的“Field”类型,这些类型将从“Field”继承并嵌套以保持可读性。例如 abstract class Field { public int Length { get; set; } public class FieldA : Field { public static void DoSomething() { Console.WriteLin

我正在处理的当前类库将有一个基类(Field),其中包含50多个特定的“Field”类型,这些类型将从“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”


这并不是说应用程序被破坏了,但我觉得这很奇怪。在Boo(这是库中使用的实际语言)中执行相同的操作。

听起来您想要的是:

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

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

否则,您将定义一个包含内部类的基类,继承者也将获得该基类。因此,当您从外部类继承以生成内部类时,您正在启动一个循环。

听起来您想要的是:

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

public class FieldA : Field
{
    public static void DoSomething()
    {
        Console.WriteLine("Did something.");
    }
}
否则,您将定义一个包含内部类的基类,继承者也将获得该基类。因此,当您从外部类继承以生成内部类时,您正在启动一个循环

  • Field
    有一个名为
    FieldA
  • FieldA
    继承自
    Field
  • 因此,您始终可以从
    FieldA
    访问
    FieldA
  • 引用并不是创建无限链,它只是指向同一个类。()

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

  • Field
    有一个名为
    FieldA
  • FieldA
    继承自
    Field
  • 因此,您始终可以从
    FieldA
    访问
    FieldA
  • 引用并不是创建无限链,它只是指向同一个类。()


    当您访问
    FieldA.FieldA
    时,后者
    FieldA
    是可访问的,因为前者
    FieldA
    Field
    的一个实例,因此后者
    FieldA
    实际访问
    字段。FieldA

    FieldA继承对类FieldA的引用,后者继承对类FieldA的引用,后者继承对类FieldA的引用继承对类FieldA的引用继承对类FieldA的引用继承对类FieldA的引用继承对类FieldA的引用继承对类FieldA的引用


    它之所以有效,是因为你让它这么做。

    FieldA继承了对class FieldA的引用,后者继承了对class FieldA的引用,后者继承了对class FieldA的引用,后者继承了对class FieldA的引用,后者继承了对class FieldA的引用,后者继承了对class FieldA的引用FieldA类,其中


    它之所以有效,是因为你让它这么做。

    Lol,这真的很酷。必须亲自测试才能相信:pYour的方法是合理的,特别是如果您想控制谁可以派生:使基构造函数私有,并且只有嵌套类型可以从中派生。当我试图用更丰富的OO语义模拟“enum”行为时,我使用了类似的方法。这让我想起了“moon指导学生”这一明显的逻辑疏忽。谢谢你的回复。内部构造函数也会限制谁可以从中继承…哈哈,这真的很酷。必须亲自测试才能相信:pYour的方法是合理的,特别是如果您想控制谁可以派生:使基构造函数私有,并且只有嵌套类型可以从中派生。当我试图用更丰富的OO语义模拟“enum”行为时,我使用了类似的方法。这让我想起了“moon指导学生”这一明显的逻辑疏忽。谢谢你的回复。一个内部构造函数也会限制谁可以从中继承…这就是我担心发生的事情。我想我必须找到另一种方法来安排我的课程。谢谢你的回复。我担心这就是正在发生的事情。我想我必须找到另一种方法来安排我的课程。谢谢你的回复。