在 Caculate()中形参employee指向和chen相同的实例,在该方法中又新建了一个实例temployee,最后一句让形参employee指向temployee,因为形参前面没有ref,所以对该形参的操作不会对实参chen造成影响,chen仍然指向原来的实例.

解决方案 »

  1.   

    我想可能是这样的:
      在chen这个对象中分配了存储空间,当没有加ref时,employee就相当于是他的一个副本。
      而加了ref后就想当于直接在分配给chen的空间上操作了。
      仅供参考哈。
      

  2.   

    比較同意 hanyaocsdn 的觀點,呵呵
      

  3.   

    你的Caculate是错误的,employee传进来的只是一个副本.因为你的employee不是ref或out,所以它不会回传,你计算后的temployee和employee随着Caculate的销毁而销毁了.
      

  4.   

    楼上两位朋友分析的有道理。可不可以这样说:在没有ref的情况下。在方法当中使用按值传递引用类型的时候。它传递的是对象的值。也就是托管堆当中的值。在
    Employee temployee=new Employee();
    temployee.Salary=employee.Salary;
    temployee.Sex=employee.Sex;
    temployee.Salary=temployee.Salary-(temployee.Salary*22/100);
    当中temployee实例已经在堆上有新的内存分配了。所以在最后的一句让employee指向temployee时,由于没有传递引用。故不对chen这个实例产生影响。
    不知道我这么分析是不是对的呢
      

  5.   

    同意DataLife(自由风) 的说法。