今天coding过程中突然发现一个问题,就是关于ref的用法,以前用ref也是传递值类型的数据,现在传递引用类型不用ref成不成?下面是一个让人混淆的例子
从这个例子显示的是即使没有用ref传递,也可以改变one的S,剖析一下这段代码,one及其one的s都是引用类型,实例化之后在托管堆上分配的情形是这样的,当没有用ref传递的时候,浅拷贝了一下,浅拷贝出来的对象中的s指向的托管堆中的string的实例和one中s指向的string的实例是为同一个,这就导致了如上的情形,如果这样的话
就会发现两次输出还是一样的,对于赋null的过程只是对浅拷贝出来的副本的操作。
总之,如果传递时是想对同一个对象做操作,那就要加上ref,否则的话,不管传递的参数是值类型还是引用类型的,都是操作的浅拷贝出来的副本。