`
ay_guobo
  • 浏览: 116009 次
  • 性别: Icon_minigender_1
  • 来自: 札幌
社区版块
存档分类
最新评论

C#深度拷贝(Deep Copy)

    博客分类:
  • C#
阅读更多

Hashtable和ArrayList等经常需要深度拷贝,而.Net没有现成的函数可以调用,我从国外找了一个方法。

 

 public object Clone()
        {
            BinaryFormatter Formatter = new BinaryFormatter(null, new StreamingContext(StreamingContextStates.Clone));
            MemoryStream stream = new MemoryStream();
            Formatter.Serialize(stream, this);
            stream.Position = 0;
            object clonedObj = Formatter.Deserialize(stream);
            stream.Close();
            return clonedObj; 
        }

 继承了Clonable接口之后,像这样重写Clone()方法就可以了,他利用了序列化和反序列化的原理,将序列化的流丢入内存,再从内存中反序列化回来就OK了!

分享到:
评论

相关推荐

    C#深度拷贝克隆源码

    在编程领域,特别是使用.NET框架的C#语言中,"深度拷贝"是一个重要的概念,主要涉及对象复制。本文将详细解析"深度拷贝"的概念、实现方式以及如何在C#中实现一个自定义类的深度拷贝。 深度拷贝是指创建一个新对象,...

    C# Lambda快速深度拷贝

    今天上班在班车上和一个同事讨论有关C#拷贝效率的问题,聊到了多种深度拷贝方法,其中就提到了一种Lambda表达式拷贝的方法,这位同事说这种深度拷贝快是快但是如果对象里面再嵌入对象就不能深度拷贝了,只进行浅拷贝...

    浅谈C#中ListT对象的深度拷贝问题

    一、List对象中的T是值类型的情况(int 类型等) 对于值类型的List直接用以下方法就可以复制: List<T> oldList = new List(); oldList.Add(..); List<T> newList = new List(oldList); 二、List对象中的T是引用...

    C#中的浅拷贝和深拷贝

    根据复制的方式不同,可以分为浅拷贝(Shallow Copy)和深拷贝(Deep Copy)。这两种复制方式各有其特点和适用场景。 #### 值类型变量与引用类型变量 在深入讨论浅拷贝与深拷贝之前,我们需要先理解C#中的两种基本...

    C#深拷贝 C#深拷贝

    C#深拷贝;C#深拷贝;C#深拷贝;C#深拷贝;C#深拷贝;C#深拷贝;

    C#浅拷贝深拷贝

    在C#编程中,浅拷贝(Shallow Copy)和深拷贝(Deep Copy)是两种不同的对象复制方式,它们涉及到内存管理和数据复制的细节。理解这两种拷贝机制对于优化代码性能和确保程序的正确性至关重要。 首先,我们来解释...

    C#实现异步拷贝多个文件

    在C#编程中,异步操作是现代应用开发的关键特性,尤其在处理大量I/O密集型任务时,如文件拷贝。异步编程允许程序在等待长时间运行的操作完成时,继续执行其他任务,从而提高应用程序的响应性和效率。本主题将深入...

    C#批量拷贝文件

    3. **拷贝文件**:C#中的`File.Copy()`方法用于复制文件。它接受两个参数:源文件路径和目标文件路径。例如,`File.Copy(sourcePath, destinationPath, true)`,第三个参数表示是否覆盖已存在的目标文件。 4. **...

    C#拷贝文件夹进度条

    网上好多负责文件夹的进度条写的都有问题,在此基础上,自己修改了一下,进度条可以完美显示出来,另外还加了一个label动态显示拷贝的文件名,用的多线程,里面一些细节大家还是要注意一下的。另外拷贝文件夹是是...

    C# CopyDirectory 文件夹拷贝

    总之,`C# CopyDirectory`是C#编程中进行文件夹拷贝的重要工具,结合其他文件操作方法,可以实现丰富的文件管理功能。对于初学者而言,掌握这些基本操作是学习C#开发过程中不可或缺的部分。通过实践和理解这些方法的...

    c#深度复制浅度复制

    2. 深度复制(Deep Copy): 深度复制则是创建一个新对象,并且递归地复制原始对象的所有字段,包括引用类型的字段。这意味着新对象拥有原始对象所有数据的完整副本,即使原始对象中的引用类型字段也分别在新对象中...

    浅谈C#中List<T>对象的深度拷贝问题

    在C#编程中,深度拷贝是一个重要的概念,尤其是在处理复杂数据结构时。深度拷贝是指创建一个新对象,不仅复制原始对象的属性,还复制了嵌套对象的引用,确保新旧对象之间的独立性。本文将探讨C#中List对象的深度拷贝...

    C#深拷贝效率对比,C#深拷贝效率对比

    - 限制拷贝深度:在某些场景下,可以限制拷贝的深度,避免递归拷贝大量嵌套对象。 综上所述,C#中的深拷贝有多种实现方式,每种方式在效率、灵活性和可维护性上都有所差异。选择合适的深拷贝策略需根据具体应用...

    c#集成Halcon的深度学习软件,带[MNIST例子]数据集【带源码

    C#作为.NET框架的主要编程语言,虽然不是传统的深度学习首选语言,但通过引入第三方库,如Halcon,可以有效地支持深度学习应用的开发。Halcon是一款著名的机器视觉软件,提供了丰富的图像处理和模式识别功能,包括...

    C#文件拷贝

    在C#编程中,文件操作是一项基础且重要的任务,其中包括文件的创建、读取、写入以及拷贝等。在这个“C#文件拷贝”的项目中,开发者提供了一个基于Windows窗体的应用程序,旨在帮助新手熟悉如何在C#环境下进行文件...

    C# 控件拷贝

    在`C#控件COPY`这个示例程序中,可能会演示如何实现上述的控件拷贝和动态UI生成功能。它可能包括以下部分: - 主函数:初始化界面,包含一个或多个可复制的控件。 - 拷贝按钮点击事件:调用拷贝逻辑,创建新的控件...

    C#磁盘完整拷贝

    本项目标题为"C#磁盘完整拷贝",这意味着我们将探讨如何使用C#这门编程语言来实现对硬盘的镜像复制。下面将详细介绍这个主题,并结合描述和标签,深入解析相关的技术知识点。 首先,我们要理解什么是磁盘完整拷贝。...

    c#使用CMD命令COPY文件

    c#使用CMD命令COPY文件,程序简单实用,适合初学者学习如何使用C#语言调用CMD命令

    C#浅拷贝(MemberwiseClone等多种方法)与深拷贝(反射、多种反序列化)实例

    在C#编程中,对象的复制是一个常见的操作,主要分为浅拷贝和深拷贝两种。浅拷贝只复制对象的引用,而深拷贝则会创建一个全新的对象,包括对象内部的所有引用对象。本文将深入探讨这两种拷贝方式以及它们在C#中的实现...

    C# 当在文件拷贝后,再接着后面操作 ,会提示文件被占用 ,导致后面的操作异常

    在C#编程中,文件操作是一项常见的任务,其中包括文件的复制。然而,有时在尝试进行文件复制后立即执行其他操作时,可能会遇到“文件被占用”的错误,这将导致后续操作异常。这个问题通常是由于文件复制过程尚未完全...

Global site tag (gtag.js) - Google Analytics