`
java-mans
  • 浏览: 11742817 次
文章分类
社区版块
存档分类
最新评论

C# 引用对象深克隆帮助类

 
阅读更多

//克隆帮助类,可以克隆任意 class 对象

[System.Serializable]
public class ClongHelper<T>:ICloneable where T : class
{
public ClongHelper(T obj)
{
this.Data = obj;
}
/// <summary>
/// 待克隆的数据
/// </summary>
public T Data { set; get; }

/// <summary>
/// 克隆一个相同的实例
/// </summary>
/// <returns></returns>
public object Clone()
{
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, this);
ms.Seek(0, SeekOrigin.Begin);
return bf.Deserialize(ms);
}
}

----- 例:克隆 person 对象

------ Person 对象

public class Person

{

public int UserId{set;get;}

public stringName{set;get;}

}

----- 克隆调用实例

private void Test1()

{

Person oP= new Person(){id=1,Name="张三"};

}

分享到:
评论

相关推荐

    C#中Clone一个对象的值到另一个对象案例 c#经典案例.pdf

    浅复制只是复制对象的引用,而深复制则是复制对象的所有值。 浅复制 浅复制是 Clone 方法的默认实现,它只是复制对象的引用,而不复制对象的值。例如,下面的代码: ```csharp public class A : ICloneable { ...

    C# List引用类型克隆的3种方法

    本文将探讨三种克隆C# List引用类型的方法:反射、JSON序列化(依赖于Newtonsoft.Json库)以及BinaryFormatter序列化。 首先,让我们深入理解C#中的浅复制和深复制概念。默认情况下,当复制一个引用类型的变量时,...

    C#深度拷贝克隆源码

    浅拷贝只复制对象的引用,而深拷贝则复制对象本身及其所有嵌套对象。对于值类型,如int、double,它们是按值复制,所以浅拷贝和深拷贝没有区别。但对引用类型,如自定义类实例,就需要区分这两种拷贝方式。 实现...

    C#面向对象设计模式纵横谈(6):Prototype 原型模式(创建型模式)

    而`Object`类中的`MemberwiseClone()`方法则执行浅复制,只复制对象自身的值类型字段,对于引用类型字段,只是复制引用,而非引用的对象内容。 在具体应用原型模式时,我们需要考虑以下几点: 1. **浅复制与深复制...

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

    - 深拷贝(Deep Copy):不仅复制对象本身,还递归地复制其包含的所有引用的对象。这样,新对象和原对象是完全独立的,修改副本不会影响原始对象。 2. **C#中的深拷贝实现** - **序列化与反序列化**:使用`...

    C#面向对象设计模式纵横谈(6):Prototype 原型模式(创建型模式) (Level 300)

    在C#中,原型模式是通过接口或抽象类来实现的,通常涉及`ICloneable`接口或者自定义的克隆方法。 在C#中,`ICloneable`接口提供了`Clone()`方法,用于创建一个对象的副本。然而,`ICloneable`的实现并不总是深拷贝...

    C#面向对象设计模式纵横谈(5)

    这通常涉及到浅复制(仅复制对象自身的引用)或深复制(复制对象及所有嵌套对象)。 ```csharp public class ConcretePrototype : Prototype { public string Property { get; set; } public ConcretePrototype ...

    浅析C#的复制和克隆

    浅克隆只复制对象本身,不复制它引用的对象,而深克隆则会递归地复制所有引用的对象。在上述示例中,使用`Clone()`方法实现了浅克隆,解决了修改`ht2`不会影响到`ht`的问题,即`ht2 = ht.Clone();`。 在处理像`...

    详解 c# 克隆

    克隆类型分为两种:浅克隆、深克隆。 1、浅克隆 浅克隆方式是最简单、最直接的方式。只需要类实现接口ICloneable(在命名空间System.Runtime.InteropServices下)的Clone方法,在方法中使用加入对当前类的...

    C#视频-面向对象设计模式纵横谈(6):Prototype 原型模式(创建型模式)

    这样,即使原对象的引用对象被修改,新对象也不会受到影响。 ### 4. 应用场景 - 当创建新对象的成本很高时,例如需要大量计算或数据库查询。 - 当对象需要被多次复制时,比如游戏中的角色模型或者网页布局模板。 - ...

    原型模式(ProtoType)C#应用案例

    2. **浅拷贝与深拷贝**: 浅拷贝只是复制对象的引用,如果对象内部包含其他对象的引用,那么新旧两个对象共享同一块内存。而深拷贝则会为对象的所有属性创建新的副本,包括嵌套的对象。在C#中,对于非简单类型的属性...

    C#设计模式大全

    - **浅拷贝与深拷贝**:浅拷贝只复制对象本身,而深拷贝还会复制对象内部引用的对象。 - **优点与缺点**:优点是可以避免对象创建过程中的开销,缺点是在某些情况下可能需要处理复杂的复制逻辑。 #### 适配器...

    C#095复制copy的应用 源代码.

    在C#编程中,复制和克隆对象是常见的操作,特别是在处理数据模型或者需要创建对象副本以保持原对象不变性的情况下。本主题将深入探讨C#中的复制概念,特别是通过`Copy`方法实现的浅复制和深复制。 首先,我们要理解...

    C# 控件拷贝

    但对于引用类型,如自定义对象,需要进行额外的处理以实现深拷贝。 动态UI生成是指在运行时根据需要创建和修改界面。这可能涉及到根据数据动态创建控件,或者根据用户的操作动态调整界面布局。例如,从数据库中读取...

    复制copy的应用(C#源代码编写)

    浅拷贝只是创建了原始对象的一个新引用,而深拷贝则创建了一个全新的对象,其内部的所有字段也都是独立的副本。例如,对于包含引用类型的类: ```csharp class MyClass { public List&lt;int&gt; Numbers = new List(); ...

    C#两个相同属性的类赋值方法

    5. 深拷贝与浅拷贝:这种方法仅进行浅拷贝,即引用类型属性的值只是指向了同一个对象。如果需要深拷贝(即复制对象的所有嵌套对象),则需要更复杂的逻辑。 6. 自定义逻辑:如果属性赋值需要特定的逻辑,例如验证、...

    C# 类型基础

    C#是一种面向对象的编程语言,它的类型系统是其核心组成部分,主要分为值类型(ValueType)和引用类型(ReferenceType)两大类。理解这两类类型对于学习C#编程至关重要。 值类型直接包含数据,存储在栈(stack)上,当...

    ObjectCompares:比较两个引用类型的所有属性值和字段值是否相等。可用于判断一个Clone的对象和原对象比较,看是否被更改过

    在处理对象时,我们有时需要比较两个对象的属性和字段是否完全相同,特别是在涉及到深拷贝、克隆或数据验证的场景。`ObjectCompares` 类似于这样的工具,它提供了一个方便的方式来深度比较两个引用类型的实例,确保...

    C#编程中使用设计模式中的原型模式的实例讲解

    - **深拷贝**:不仅复制对象本身,还递归复制对象中包含的所有引用对象。 ### 五、实际应用举例 在上述的入学考试场景中,`Itest`接口代表试卷样例,`Test`类是具体的实现。`Clone()`方法用于创建试卷的副本,使得...

Global site tag (gtag.js) - Google Analytics