当前位置: 首页 > news >正文

单页网站模板修改网站建设 尚品中国

单页网站模板修改,网站建设 尚品中国,电子商务的建站流程,设计网站广告标语文章目录 浅度和深度复制浅度复制深度复制如何选择 浅度和深度复制 在C#中#xff0c;浅度复制#xff08;Shallow Copy#xff09;和深度复制#xff08;Deep Copy#xff09;是两种不同的对象复制方式#xff0c;满足不同的应用场景需求#xff0c;它们主要区别在于处… 文章目录 浅度和深度复制浅度复制深度复制如何选择 浅度和深度复制 在C#中浅度复制Shallow Copy和深度复制Deep Copy是两种不同的对象复制方式满足不同的应用场景需求它们主要区别在于处理引用类型成员的方式不同。 浅度复制 当进行浅复制时系统会创建一个新的对象实例但这个新对象的字段将与原始对象中的值类型字段具有相同的值而对于引用类型字段则仅仅是复制了引用本身而不是引用的对象内容。 也就是说如果一个类中有引用类型的成员变量比如数组、其他自定义类的对象等那么浅复制后新对象和原对象的这些引用类型成员仍然指向同一个内存地址。因此对任何一个对象的引用类型成员所做的修改都会影响到另一个对象。 深度复制 深度复制不仅复制了原始对象的所有值类型字段还为所有引用类型字段创建了新的独立副本。这意味着如果一个类包含引用类型成员在执行深度复制时不仅复制这些引用还会递归地复制引用所指向的对象直到所有的引用都指向全新的对象实例。 因此通过深度复制得到的新对象是一个完全独立的副本对新对象的任何更改都不会影响到原始对象及其引用的其他对象。 实现深度复制通常需要显式编写代码来复制每个引用类型字段并在必要时递归复制其内部的引用类型字段。我们可以实现ICloneable接口并重写Clone()方法来进行自定义的深度复制逻辑或者直接调用相关的构造函数、序列化/反序列化方法等方式来实现深度复制。 接下来我们看一个实例假设有一个 Person类它包含一个引用类型字段 Address我们为其实现深度复制代码如下所示 public class Person : ICloneable {public string Name { get; set; }public Address HomeAddress { get; set; } //Address 是一个引用类型public object Clone(){var clone new Person{Name this.Name,HomeAddress (Address)this.HomeAddress.Clone() //Address 类也实现了 ICloneable 接口};return clone;} }public class Address : ICloneable {public string Street { get; set; }public object Clone(){return new Address { Street this.Street };} }这样当调用 person.Clone() 方法时将会创建一个包含全新 Address 对象的新 Person 实例。 然后我们测试一下深度复制后是否还是原来的对象。 public class Program {public static void Main(){// 创建原始 Person 对象var originalPerson new Person{Name 水智,HomeAddress new Address { Street 天桥底下. }};// 使用 Clone 方法进行深度复制var clonedPerson (Person)originalPerson.Clone();// 修改克隆后的 Person 和 Address 对象的属性值clonedPerson.Name 智哥;clonedPerson.HomeAddress.Street 别墅一条街.;// 输出原始和克隆对象的属性值验证它们是否独立Console.WriteLine($原来的姓名: {originalPerson.Name}, 住址: {originalPerson.HomeAddress.Street});Console.WriteLine($克隆后的姓名: {clonedPerson.Name}, 住址: {clonedPerson.HomeAddress.Street});} }在这个示例中我们首先创建了一个 Person 对象并设置了它的 Name 和 HomeAddress。然后通过调用 Clone 方法创建了该对象的一个副本。接着我们修改了复制得到的对象及其引用类型字段的属性值最后输出原始对象和复制对象的属性值。如果输出结果显示两者属性值不同那么就证明我们成功实现了深度复制即复制的对象与原对象是完全独立的。 运行后我们可以发现并不是原来的对象而是创建了一个新的对象如下图所示。 如何选择 在一些场景下我们可能只需要复制对象的引用类型成员的引用而不是其实际内容。例如在某些集合类如 List的 CopyTo 方法中默认就是进行浅复制。 当你确定引用类型的对象在复制后不会被修改或者多个对象共享同一份数据是合理的情况时可以使用浅复制来节省内存。 在其他情况下尤其是当对象包含复杂的引用类型成员且这些引用类型的成员也需要独立于原对象时就需要进行深度复制。比如在游戏开发中角色或物品需要复制时复制后的对象应当具有独立的状态不影响原对象和其他副本。 选择合适的复制方式能够确保程序的效率。浅度复制相对快速且占用内存较小但可能会导致意料之外的数据共享。而深度复制虽然可能消耗更多资源但它能确保复制出的对象与原对象之间不存在任何关联更有利于保持数据的一致性和隔离性。 具体用哪个就根据对象的具体情况以及业务逻辑需求。
http://www.hkea.cn/news/14335455/

相关文章:

  • 北京附近做网站的公司wordpress用户名是哪个文件
  • 微商网站推广WordPress模仿教程
  • 如何网站建设 需要详细的步骤网站按钮代码
  • 个人网站设计怎么做第三方网站做app
  • 建立品牌网站的想做软件开发需要学什么
  • 怎么做公司内部网站代理公司注册上海
  • 金塔精神文明建设网站免费手游代理平台
  • 营销网站建设教程import wordpress
  • 郑州网站建设培训学校制作网站商城
  • 石家庄网站制作公司哪家好手机网站怎么搭建
  • 网站做适配大型服装商城网站建设
  • 大网站米方科技网站建设
  • 模板网站外链做不起来微信小程序是怎么开发的
  • 做单挣钱的网站360提交网站备案
  • 合肥市蜀山区做个网站多少钱广州平台公司
  • 网站开发人员结构如何选择制作网站公司
  • 做网站空间和服务器的企业做网站建设
  • 绍兴网站建设公司电话wordpress5.2占用内存大
  • php中做购物网站的教程广东专业网站定制
  • 上海私人网站建设企业邮箱申请哪个
  • 专业网站建设哪里有自己想开个网站怎么弄
  • 好网站建设公司哪家好东莞樟木头哪里有做网站的
  • 双语言网站源码慈溪哪里有做网站
  • 西数网站助手软件开发的职业规划1000
  • 怎样查找自己建设的网站手机软件定制开发公司
  • 单位网站建设情况vs html5网站开发
  • 云南昆明做网站wordpress 建站教程
  • 威海建设集团官方网站文化传播公司做网站宣传好吗
  • 网站刷链接怎么做的腊肉网站的建设前景
  • 中山市有什么网站推广wordpress d8 修改