首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏C# 设计原则

    C#设计模式——(创建型-原型设计模式)

    Console.WriteLine(re1.Name); Console.ReadKey();三、简化的原型模式 public class Resume2:ICloneable res2 .ShowResume();//值类型,res2发生了变化;引用类型,全部发生变化 public class Experience:ICloneable return this.MemberwiseClone(); } } public class Resume3 : ICloneable this.Exp.TimeArea}{this.Exp.Company}"); } }五、(伪)深拷贝真正的深拷贝要用反射、序列化 public class Resume3 : ICloneable

    65710编辑于 2022-10-09
  • 来自专栏挖坑填坑

    设计模式- 原型模式(Prototype Pattern)

    C#例子 [Serializable] public class Sheep : ICloneable { public string Name { get; set this.Name = name; Children = new List<Sheep>(); } ///

    /// 通过ICloneable stream.Position = 0; return formatter.Deserialize(stream) as Sheep; } } 原型模式参与者: ICloneable

    51110发布于 2019-04-27
  • 来自专栏科控自动化

    [C#] 接口基础教程之五 实现接口

    class Shape: ICloneable { object ICloneable.Clone( ) {…} } class Ellipse: Shape { object ICloneable.Clone ( ) {…} }    在Ellipse 中定义ICloneable.Clone是错误的,因为Ellipse即使隐式地实现了接口ICloneableICloneable仍然没有显式地出现在Ellipse 例如: interface ICloneable {   object Clone( ) ; } class C: ICloneable {   object ICloneable.Clone( ) class Shape: ICloneable { object ICloneable.Clone( ) {…} } class Ellipse: Shape { object ICloneable.Clone 例如: interface ICloneable {   object Clone( ) ; } class C: ICloneable {   object ICloneable.Clone( )

    1K31编辑于 2022-03-29
  • 来自专栏大闲人柴毛毛

    三分钟理解“原型模式”——设计模式轻松掌握

    这种情况下使用原型模式非常便捷: 我们让这个类去实现ICloneable接口,并且实现该接口的clone()函数,在clone函数中让当前对象进行一次浅拷贝/深拷贝,总之就是克隆一个当前对象来,这样我们就无需 如果一个类要使得调用者能够克隆,那在定义这个类的时候就需要让它实现ICloneable接口,并实现clone函数,在函数中实现当前对象的浅拷贝或深拷贝。 由于Person类也实现了ICloneable接口,并且clone函数也进行了一样的操作,调用Work类的clone函数,由于Work类中全都是基本数据类型,所以Work类不需要实现ICloneable

    865140发布于 2018-03-09
  • 来自专栏DotNet NB && CloudNative

    C# 规范整理:15个知识点!

    当然,ICloneable接口只提供了一个声明为Clone的方法,我们可以根据需求在Clone方法内实现浅拷贝或深拷贝。 int Age {get;set; } public Department Department{get;set;} #region ICloneable成员 一个简单的深拷贝实现样例如下(建议使用序列化的形式来进行深拷贝) class Employee:ICloneable { public string IDCode{get;set;} public int Age{get;set;} public Department Department{get;set;} #region ICloneable成员 public Em-ployee的最终版本看起来应该像如下的形式: [Serializable]class Employee:ICloneable{ public string IDCode{get;set;

    31610编辑于 2024-01-03
  • 来自专栏vue

    递归一个List<T>,可自己根据需要改造为通用型。

    ref _provinceOrgs); } } }  实体类: public class ProvinceOrg : ICloneable ; p.children = new List<ProvinceOrg>(); return p; } object ICloneable.Clone

    45620发布于 2019-04-21
  • 来自专栏DotNet NB && CloudNative

    C# 规范整理·语言要素

    当然,ICloneable接口只提供了一个声明为Clone的方法,我们可以根据需求在Clone方法内实现浅拷贝或深拷贝。 int Age {get;set; } public Department Department{get;set;} #region ICloneable成员 一个简单的深拷贝实现样例如下(建议使用序列化的形式来进行深拷贝) class Employee:ICloneable { public string IDCode{get;set;} public int Age{get;set;} public Department Department{get;set;} #region ICloneable成员 public Em-ployee的最终版本看起来应该像如下的形式: [Serializable]class Employee:ICloneable{ public string IDCode{get;set;

    45250编辑于 2023-08-30
  • 来自专栏EdisonTalk

    设计模式的征途—5.原型(Prototype)模式

    这里,Object相当于抽象原型类,而所有实现了ICloneable接口的类都相当于具体原型类。 public class WeeklyLog : ICloneable { public string Name { get; set; } public string 再来看看深复制的实现: [Serializable] public class WeeklyLog : ICloneable { public string Name (1)抽象原型与具体原型 public interface OfficeDocument : ICloneable { new OfficeDocument Clone( ); // 隐藏ICloneable的Clone接口方法定义 void Display(); } public class FAR : OfficeDocument

    68730发布于 2018-08-21
  • 来自专栏独立观察员博客

    一起学习设计模式--05.原型模式

    .Id); Console.ReadKey(); } } 2、C#语言提供的 Clone 方法 C# 中要想能够实现克隆的类,必须实现一个标识接口 ICloneable public class ConcretePrototypeB : ICloneable { public object Clone() { { Console.WriteLine("下载文件,文件名为" + Name); } } public class WeeklyLog : ICloneable ///

    /// 抽象公文接口,也可以定义为抽象类 /// public interface IOfficialDocument : ICloneable { new IOfficialDocument Clone();//隐藏ICloneable的Clone方法接口 void Display(); }

    51410编辑于 2022-12-06
  • 来自专栏软件工程师Michael

    设计模式--原型模式

    下面是使用C#编写的一个原型模式实例:using System;public class Person : ICloneable{ public string Name { get; set; } : John, 30 Console.WriteLine(person2); // Output: John, 31 }}以上代码运行结果如下:图片在这个例子中,Person类实现ICloneable

    35440编辑于 2023-06-20
  • 来自专栏技术博客

    编写高质量代码改善C#程序的157个建议[为类型输出格式化字符串、实现浅拷贝和深拷贝、用dynamic来优化反射]

    无论是浅拷贝还是深拷贝,微软都建议用类型继承ICloneable接口的方式明确告诉调用者:该类型可以被拷贝。 当然,ICloneable接口只提供了一个声明为Clone的方法,我们可根据需求在Clone方法内实现浅拷贝或深拷贝。 一个简答的浅拷贝的实现代码如下所示: 首先定义实体类: public class Employee:ICloneable { public string IDCode { 由于接口ICloneable,只有一个模棱两可的方法,所以,如果要在一个类中进行浅拷贝和深拷贝,只能由我们额外的实现两个方法。声明为DeepClone和Shallow。 那么最终代码如下所示: [Serializable] public class Employee:ICloneable { public string IDCode

    57030发布于 2018-08-31
  • 来自专栏菩提树下的杨过

    [你必须知道的.Net]读书笔记--浅clone与深clone

                Console.WriteLine("{0}'s age is {1}", Name, Age);         }     } class Enrollment : ICloneable             Console.WriteLine("{0}'s age is {1}", Name, Age);         }     } class Enrollment : ICloneable

    1.1K60发布于 2018-01-23
  • 来自专栏微卡智享

    分享|C#解析深浅拷贝

    string; } } ///

    /// 深拷贝 /// public class DeepClone : ICloneable 数组 类型变化 原对象:{simple.arrString[0]}\t\t 备份对象:{simpleTwo.arrString[0]}"); } }   我们通过继承ICloneable 我们继续将上面的例子进行深拷贝看看: /// /// 深拷贝 /// public class DeepClone : ICloneable

    50010发布于 2019-11-14
  • 来自专栏全栈程序员必看

    C#接口知识大全收藏建议收藏

    1 class Shape: ICloneable 2 3 { 4 5 object ICloneable.Clone( ) {…} 6 7 } 8 9 class Ellipse : Shape 10 11 { 12 13 object ICloneable.Clone( ) {…} 14 15 }   在Ellipse 中定义ICloneable.Clone是错误的,因为 Ellipse即使隐式地实现了接口ICloneableICloneable仍然没有显式地出现在Ellipse定义的基类列表中。    例如: 1 interface ICloneable { 2 3  object Clone( ) ; 4 5 } 6 7 class C: ICloneable { 8 9   object ICloneable.Clone( ) {…} 10 11  public object Clone( ) {…} 12 13 }   例子中成员ICloneable.Clone 称为接口

    2.4K20编辑于 2022-07-15
  • 来自专栏张志敏的技术专栏

    设计模式之原型模式

    实现 abstract class Prototype : ICloneable { public abstract int X { get; set; }

    34920发布于 2020-08-10
  • 来自专栏跟着阿笨一起玩NET

    .NET常用的扩展方法整理

    = null) { if (value is ICloneable) { pro.SetValue(target, (value as ICloneable).Clone(), null); } Object fieldValue = field.GetValue(obj); if (fieldValue is ICloneable { field.SetValue(targetDeepCopyObj, (fieldValue as ICloneable object propertyValue = myProperty.GetValue(obj, null); if (propertyValue is ICloneable

    1.4K10发布于 2018-09-19
  • 来自专栏DotNet 致知

    设计模式之原型模式

    接下来我们看一下如何让一个对象可被克隆: class prototypeClass : ICloneable { public prototypeClass(string classname) set; } public void ShowName() { Console.WriteLine(classname); } } 具体的逻辑就是让原型类实现ICloneable

    47420编辑于 2022-03-29
  • 来自专栏blackheart的专栏

    [C#1] 4-通用对象操作

    3.对象克隆 一个类必须自己确定是否允许被克隆,如果允许则应该实现IConeable接口,该接口定义一个方法Clone方法,实现该方法如下: class myConle : ICloneable {

    81760发布于 2018-01-19
  • 来自专栏Unity3d程序开发

    C#中的深复制和浅复制(在C#中克隆对象)

    浅复制: 实现浅复制需要使用Object类的MemberwiseClone方法用于创建一个浅表副本 深复制: 须实现 ICloneable接口中的Clone方法,且需要需要克隆的对象加上[Serializable ]特性 namespace DeepCopy { class DrawBase : System.Object, ICloneable { public List<string

    2.9K10编辑于 2023-08-24
  • 来自专栏Reck Zhang

    Design Patterns 09 - 原型模式

    ConcretePrototype1("I"); ConcretePrototype1 c1 = new (ConcretePrototype1)p1.Clone(); } 对于.NET而言, 在System命名空间中提供了ICloneable

    27310发布于 2021-08-11
领券