碰巧看到吕震宇 兄的文章 C#设计模式(1) ,中提到 先有鸡还是先有蛋 的代码
c#对象:先有鸡还是先有蛋?using System;
c#对象:先有鸡还是先有蛋?
c#对象:先有鸡还是先有蛋?
class Client
}
        “Derived继承自Base,可以说没有Base就没有Derived,可Base里面有一个成员是Derived类型。到底是先有鸡还是先有蛋?这个程序可以正常编译执行并打印结果10。”
     
         上面提到可以正常编译并能打印结果,是没错,不过这不能说明先有鸡还是先有蛋这个问题。先有鸡还是先有蛋是说是鸡先生蛋呢还是蛋生鸡。在上面的代码中Base类声明有一个Derrived类,在Base实例化时,也就是“生”的时候并没有把Derrived类也“生”出来,因此不能说明问题.
         Base类声明有一个Derrived类,也就是Base类的实例有一个指向Derrived类的指针,这是个引用问题,而这个引用在Base类创建时为null。
         看下面的代码:
c#对象:先有鸡还是先有蛋?using System;
c#对象:先有鸡还是先有蛋?
c#对象:先有鸡还是先有蛋?
class Client
}
         在上面的代码中Base类声明有一个Derrived类,在Base实例化时,也就是“生”的时候把Derrived类也“生”出来,编译通过,运行的时候死循环!
        我不知道有什么托管对象可以先在Object对象之前创建出来!
        Object对象作为所有其他对象的根对象,自然Object对象先创建出来,也就是说先有Object再有其他派生对象。


相关文章:

  • 2021-12-24
  • 2022-03-04
  • 2022-12-23
  • 2022-01-27
  • 2021-12-23
  • 2021-09-10
  • 2021-09-02
猜你喜欢
  • 2022-01-25
  • 2018-10-15
  • 2021-09-19
相关资源
相似解决方案