前提:
     1.问一个简单的问题:
         A是一个对象,然后 a1,a2,a3是A的实例。
问题:
    在内存里A的成员方法,非静态的。
    a1,a2,a3的成员属性与方法都是有3份吗?这些方法都是共用的。
    在js里有个原型对象的问题,如果是共用的就只占一份内存。现在在.net里的情况是怎样呢?

解决方案 »

  1.   

     a b c 下面的桶称放实例成员值(或引用)
    ----------------
      a    b    c                             / 参数来自外部
    |    |    |    |                         /        |
    |    |    |    |                        / f1 (argumentA)
    |    |    |    |   访问成员<-   函数表 -  f2 (argumentA)
    |    |    |    |                        \ f3 (argumentA)
    |    |    |    |                         \       |
    |    |    |    |                          \参数来自外部
    ----------------
      

  2.   

    可能是我太菜啦。。没看懂这个图的目的。
    其实我想问的是,作为 A 的实例,a1,a2,a3他们都自己存储了A的函数吗?
      

  3.   


    问题中,有一个概念上的错误:“A是一个对象,然后 a1,a2,a3是A的实例。”请注意:类的实例化就是对象,所以,一般来说,对象就是类的实例,两者没有区别。
    应为“A是一个类,然后 a1,a2,a3是A的实例。”1. 所有静态的成员(字段、属性、方法),所有实例共用一份。
    2. 非静态字段,每实例一份。
    3. 非静态属性与非静态方法,所有实例共用一份方法中的代码,每实例一份方法中的数据。
      

  4.   

    对象的实例仅仅是数据...对象的定义叫做元数据...说到点啦问题中,有一个概念上的错误:“A是一个对象,然后 a1,a2,a3是A的实例。” 请注意:类的实例化就是对象,所以,一般来说,对象就是类的实例,两者没有区别。 
    应为“A是一个类,然后 a1,a2,a3是A的实例。” 1. 所有静态的成员(字段、属性、方法),所有实例共用一份。 
    2. 非静态字段,每实例一份。 
    3. 非静态属性与非静态方法,所有实例共用一份方法中的代码,每实例一份方法中的数据。

    这个回得得很贴切。
    请问数据与元数据要到什么地方研究,什么书?