object是所有类型的基类
什么bool,sring,整型都是继承自它
那么从反编译器看object的定义中有用到bool类型,等那么在object未被定义前bool类型该也是没有定义的吧
求解释,各位大神?
他们的关系岂不乱了

解决方案 »

  1.   

    想起个寓言
    从前有个妈,她有个傻儿子,一天妈要出门,给傻儿子烙一张大饼,套在他的脖子上,几天以后,妈回来,发现傻儿子饿死了,只有脖子前的饼被吃了,脖子后面的,全留下了我不是说楼主是傻儿子,我是说编.net的人不是傻儿子
    按楼主的说法,下面的代码岂非要出错
    public class a{
      void test()
       {
         b sb=new b();
       }
       public a(){
        b sb = new b();
      }
    }
    public class b:a{}
      

  2.   

    其实,valuetype类型(比如bool、int、byte等等)并不是真正“继承自”object,它们之所以看上去是继承的,是clr的一种伪装,这种伪装叫做“装箱/拆箱”。另外,你的问题没有什么大惊小怪的。声明和定义是两回事,请看如下定义:class BinaryTree
    {
        public Node root;
    }
    class Node
    {
        public Node left; // Node中包含Node
        public Node right;
    }
      

  3.   

    我只是想搞清楚这东西实现的机制
    1楼和三楼说的我也看到过,但是不知道。net是怎样解决这问题的
    2楼很厉害啊
      

  4.   


    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                a tt = new a();
                b ss = new b();
                Console.ReadKey();
            }
        }
            class a
        {
            void test()
            {
                b sb = new b();
            }
            public a()
            {
                b sb = new b();
                Console.WriteLine("这是父类");
            }    }
        class b : a
        {
            public b()
            {
                Console.WriteLine("这是子类");
            }
        }
    }
      

  5.   

    主要还是构造函数
    在创建b这个对象的时候,会先去调用a的构造函数,在返回来调用b的构造函数,所以会无限循环下去了
    会抛出栈溢出异常
      

  6.   

    我不是说的很清楚了么?值类型并非从Object真正继承,并且初始化值类型是可以不需要调用构造函数的。
      

  7.   


    哪有什么先后?谁跟你说从object集成的类型没有定义?
      

  8.   

    给你写个demo:using System;namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                var x = new B();
                x.Y = new A();
                Console.WriteLine(x.Y.X);
                Console.ReadKey();
            }
        }     class A
        {
            public string X="hello";
            public B Y;
        }    class B
        {
            public int X=1234;
            public A Y;
        }
    }
      

  9.   

    你还可以写using System;namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                var x = new B();
                x.Y = new A();
                x.Z = new B { X = 4567 };
                Console.WriteLine(x.Z.X);
                Console.ReadKey();
            }
        }    class A
        {
            public string X = "hello";
            public B Y;
        }    class B
        {
            public int X = 1234;
            public A Y;
            public B Z;
        }
    }哪有什么“定义先后”这种规定?
      

  10.   

    这样理解吧
    如果楼主知道代码是放在哪的,就不可能不知道那么在object未被定义前bool类型该也是没有定义的吧 这个问题,因为object类不是对象,bool类型也不是对象,不可能存在“找不到”这个问题。
      

  11.   

    A a=new A()
    a.method();
    B b=null;
    b.method();
    他把类理解成这样了。所以才会有这样的问题。
      

  12.   

    不对我再改改
    他应该是这么理解的
    A a=new A()
    a=b;
    B b=null;