当前位置:  开发笔记 > 编程语言 > 正文

在C#中按值传递引用类型

如何解决《在C#中按值传递引用类型》经验,为你挑选了2个好方法。

我想按值将引用类型传递给C#中的方法.有没有办法做到这一点.

在C++中,如果我想通过Value传递,我总是可以依赖复制构造函数来发挥作用.在C#中有什么办法除外:1.显式创建一个新对象2.实现IClonable然后调用Clone方法.

这是一个小例子:

让我们在C++中使用A类来实现复制构造函数.

一个方法func1(Class a),我可以通过说func1(objA)来调用它(自动创建一个副本)

C#中是否存在类似的东西.顺便说一下,我正在使用Visual Studio 2005.



1> Marc Gravell..:

不,C#中没有等效的拷贝构造函数.你传递的是什么(按价值)是一个参考.

ICloneable也是有风险的,因为它的定义很差,无论是深层还是浅层(加上它得不到很好的支持).另一个选择是使用序列化,但同样可以快速绘制比预期更多的数据.

如果担心您不希望方法进行更改,则可以考虑使该类不可变.然后没有人可以做任何讨厌的事情.



2> Bjarke Ebert..:

如前所述,没有与C++的拷贝构造函数等效的东西.

另一种技术是使用对象不可变的设计.对于不可变对象,传递引用和副本之间没有(语义)差异.这是System.String的设计方式.其他系统(特别是函数式语言)更多地应用了这种技术.

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有