在C#中通过值传递引用类型
我想通过值传递一个引用类型到C#中的方法。 有没有办法做到这一点。
在C ++中,如果我想通过Value,我总是可以依靠复制构造函数来发挥作用。 在C#中有任何方法,除了:1.明确创建一个新的对象2.实现IClonable,然后调用克隆方法。
这是一个小例子:
让我们来看一个实现了复制构造函数的C ++类。
一个方法func1(Class a),我可以通过说func1(objA)来调用它(自动创建一个副本)
C#中是否存在类似的东西? 顺便说一下,我正在使用Visual Studio 2005。
不,在C#中没有等效的复制构造函数。 你所传递的(按价值)是一个参考。
ICloneable
也是有风险的,因为它的定义很差,不管它是深还是浅(再加上它没有得到很好的支持)。 另一种选择是使用序列化,但同样可以快速获取比预期更多的数据。
如果担心的是您不想让方法进行更改,则可以考虑使该类不可变。 然后没有人可以做任何讨厌的事情。
正如已经解释的那样,C ++的拷贝构造函数没有相同之处。
另一种技术是使用对象不可变的设计。 对于不可变对象,在传递引用和副本之间没有(语义)区别。 这是System.String的设计方式。 其他系统(特别是函数式语言)更多地应用这种技术。
这个链接shd回答你的问题 - http://msdn.microsoft.com/en-us/library/s6938f28(VS.80).aspx
链接地址: http://www.djcxy.com/p/21019.html上一篇: Passing Reference types by value in C#
下一篇: Parameters passed by value, still changed within the function?