1、今天在工作的时候遇到个奇怪的问题,引用类型在调用方法传参,在方法里面改变,情况描述如下
public class class1{.......};
var b=new class1();
func(b);
//到此为止,b的值竟然没发生变化
public void func(class1 a)
{
a=......;
}
2、如上所述,奇怪了,引用类型b的值竟然没发生变化,引用类型的bug吗?思考了一下,C#应该不会有这么低级的bug啊,那是什么原因呢?
3、问题就出在func方法对a进行赋值上,对a的赋值,我是调用了wcf服务,JsonConvert.DeserializeObject<class1>(outValue.ToString())的方法来解析分析的结果,这里相当于新实例化了一个class1的对象,然后再赋值给a,其分配的内存地址已经发生变化,和主方法中的b对象指向的已经不是同一个地址,如此导致引用类型不起作用??,实则不是不起作用,而是内存地址发生了变化,没有对对象b指向的地址进行操作。