日期:2014-05-18  浏览次数:20762 次

怎么在方法中使用值传递引用类型
C#中方法默认是值传递的,使用ref和out可以把使值类型作为引用传递,而我想知道可以把引用类型(比如数组)通过值传递吗?这不同于默认的值传递,默认时,方法对数组的操作有效,而我现在希望对数组操作无效。

------解决方案--------------------
不可以
------解决方案--------------------
你可以复制一个相同的对象,然后将复制的副本传递到方法中
------解决方案--------------------
每个object都有个方法叫Clone()用于实现对对象的浅拷贝, 楼主可以试试.

如果是对象内有对象属性,那么就要自己去重写Clone方法了.
------解决方案--------------------
一楼的说得不对,可以的,只要加个关键字就行了 在类型前加 ref 关键字

比如
public void ss(ref string aa)
{
aa="bb";
}

调用
string ww = "255";
ss(ref ww);
输出ww的值是 bb

------解决方案--------------------
自己写一个类似string的不可变对象
------解决方案--------------------
探讨
一楼的说得不对,可以的,只要加个关键字就行了 在类型前加 ref 关键字

比如
public void ss(ref string aa)
{
aa="bb";
}

调用
string ww = "255";
ss(ref ww);
输出ww的值是 bb

------解决方案--------------------
用深拷贝就可以解决,MemberwiseClone()
------解决方案--------------------
探讨
每个object都有个方法叫Clone()用于实现对对象的浅拷贝, 楼主可以试试.

如果是对象内有对象属性,那么就要自己去重写Clone方法了.