代码之家  ›  专栏  ›  技术社区  ›  Inisheer

.NET嵌套类

  •  1
  • Inisheer  · 技术社区  · 16 年前

    我正在处理的当前类库将具有一个基类(字段),它具有50多种特定的“字段”类型,这些类型将从“字段”继承并嵌套以保持可读性。例如。。。

    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 回复  |  直到 16 年前
        1
  •  4
  •   Rowland Shaw    16 年前

    听起来你想要这样的东西:

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

    否则,您将定义一个包含内部类的基类,继承者也将得到这个类。因此,当您从外部类继承以生成内部类时,您将开始一个循环。

        2
  •  2
  •   chakrit Dutchie432    16 年前
    1. Field 有一个 公众的 名为的嵌套类 FieldA
    2. 菲尔达 继承自
    3. 因此,您可以随时访问 菲尔达 菲尔达 .

    引用不是创建无限链,它只是指向同一个类。( some test code )

    当你进入 FieldA.FieldA 后者 菲尔达 因为前者 菲尔达 是的实例 所以后者 菲尔达 实际访问 Field.FieldA

        3
  •  1
  •   annakata    16 年前

    FieldA继承对类FieldA的引用,该类FieldA继承对类FieldA的引用,该类FieldA继承对类FieldA的引用,该类FieldA继承对类FieldA的引用,该类FieldA继承对类FieldA的引用,该类FieldA继承对类FieldA的引用,而类FieldA的引用…

    它起作用是因为 这就是你让它做的。