C#中浅拷贝仅复制值类型字段和引用类型地址,深拷贝则递归复制所有嵌套对象;常用方式包括MemberwiseClone(浅拷贝)、JsonSerializer序列化(通用深拷贝)、ICloneable手动实现(精细控制)及表达式树(高性能)。
在C#中,浅拷贝只复制对象的值类型字段和引用类型的地址(即新旧对象共享同一引用对象),深拷贝则递归复制所有嵌套对象,确保新对象与原对象完全独立。关键区别在于引用类型是否被真正“复制”。
MemberwiseClone() 是Object类提供的受保护方法,它创建当前对象的浅表副本:值类型字段被逐位复制,引用类型字段只复制引用(指针),不复制所指向的对象本身。
示例:
class Person { public string Name; public Address Addr; public Person ShallowCopy() => (Person)MemberwiseClone(); }借助二进制或JSON序列化+反序列化,可绕过手动递归逻辑,自动完成完整对象图的深拷贝。这是最常用、兼容性较好的方案(前提是类型可序列化)。
示例(JsonSerializer):
public static T DeepCopy对性能敏感或结构复杂(含不可序列化资源)的类型,可实现ICloneable接口,重写Clone()方法,显式new每个引用字段并调用其Clone()。
示例:
public class Person : ICloneable { public string Name; public Address Addr; public object Clone() => new Person { Name = this.Name, Addr =
(Address)this.Addr.Clone() }; }
第三方库如FastDeepCloner、DeepCloner或自定义表达式编译器,能在首次调用后缓存委托,大幅提升后续拷贝性能。
基本上就这些。选哪种方式,取决于你的对象是否可序列化、性能要求高低、以及是否愿意承担维护成本。日常开发中,JsonSerializer深拷贝够用又安全;核心模块需要极致性能,再考虑表达式树方案。
# js
# json
# stream
# 区别
# c#
# Static
# String
# Object
# 封装
# 构造函数
# 递归
# 循环
# 指针
# 接口
# class
# 值类型
# 引用类型
# public
# protected
# FileStream
# 委托
# 泛型
# var
# 对象
# 事件
# this
# 序列化
# 首次
# 这是
# 只需
# 均为
# 适用于
# 能在
# 较好
# 自定义
相关文章:
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
南宁网站建设制作定制,南宁网站建设可以定制吗?
免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
TestNG的testng.xml配置文件怎么写
教育培训网站制作流程,请问edu教育网站的域名怎么申请?
建站主机如何安装配置?新手必看操作指南
孙琪峥织梦建站教程如何优化数据库安全?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
c# 在高并发场景下,委托和接口调用的性能对比
微信小程序制作网站有哪些,微信小程序需要做网站吗?
常州自助建站:操作简便模板丰富,企业个人快速搭建网站
SQL查询语句优化的实用方法总结
如何设置并定期更换建站之星安全管理员密码?
建站之星免费版是否永久可用?
已有域名能否直接搭建网站?
Bpmn 2.0的XML文件怎么画流程图
宝塔建站教程:一键部署配置流程与SEO优化实战指南
如何快速搭建二级域名独立网站?
建站主机CVM配置优化、SEO策略与性能提升指南
建站之星安装模板失败:服务器环境不兼容?
如何制作一个表白网站视频,关于勇敢表白的小标题?
Android滚轮选择时间控件使用详解
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
如何快速生成橙子建站落地页链接?
如何零基础在云服务器搭建WordPress站点?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
南京网站制作费用,南京远驱官方网站?
如何快速搭建高效香港服务器网站?
制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?
制作网站的模板软件,网站怎么建设?
建站之星客服服务时间及联系方式如何?
公司网站制作费用多少,为公司建立一个网站需要哪些费用?
如何在企业微信快速生成手机电脑官网?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
如何用花生壳三步快速搭建专属网站?
如何选择高效响应式自助建站源码系统?
动图在线制作网站有哪些,滑动动图图集怎么做?
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
如何在Golang中使用replace替换模块_指定本地或远程路径
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
如何快速搭建高效WAP手机网站吸引移动用户?
如何续费美橙建站之星域名及服务?
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
建站之星安装路径如何正确选择及配置?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
*请认真填写需求信息,我们会在24小时内与您取得联系。