首页 > 编程语言 >c#浅度复制和深度复制

c#浅度复制和深度复制

时间:2024-03-04 13:45:28浏览次数:37  
标签:MyTarget Console Val c# 浅度 复制 MyContent Cloner public

浅度复制 

// See https://aka.ms/new-console-template for more information
//Console.WriteLine("Hello, World!"); 2024.3.4
using System;
using System.Collections.Generic;
using System.Text;
namespace shallowCopyDemo1
{
    public class Content
    {
        public int Val;
    }
    public class Cloner
    {
        public Content MyContent = new Content();
        public Cloner(int newVal)
        {
            MyContent.Val = newVal;
        }
        public object GetCopy()
        {
            return MemberwiseClone();
        }
    }
    public class Program
    {
        static void Main(string[] args)
        {
            Cloner mySource = new Cloner(5);
            Cloner myTarget = (Cloner)mySource.GetCopy();
            Console.WriteLine("MyTarget.MyContent.val = {0}", myTarget.MyContent.Val);
            mySource.MyContent.Val = 2;
            Console.WriteLine("MyTarget.MyContent.val = {0}", myTarget.MyContent.Val);
            Console.ReadKey();
        }
    }
}
/*
MyTarget.MyContent.val = 5
MyTarget.MyContent.val = 2 
 */

深度复制

// See https://aka.ms/new-console-template for more information
//Console.WriteLine("Hello, World!"); 2024.3.4
using System;
using System.Collections.Generic;
using System.Text;
namespace DeepCopyDemo01
{
    public class Content
    {
       public int Val;
    }
    public class Cloner : ICloneable
    {
        public Content MyContent = new Content();
        public Cloner(int newVal)
        {
            MyContent.Val = newVal;
        }
        public object GetCopy()
        { 
            return MemberwiseClone();
        }
        #region ICloneable 成员
        public object Clone()
        {
            Cloner clonedCloner = new Cloner(MyContent.Val);
            return clonedCloner;
        }
        #endregion
    }
    public class Program
    {
        static void Main(string[] args)
        {
            Cloner mySource = new Cloner(5);
            Cloner myTarget = (Cloner)mySource.Clone();
            Console.WriteLine("MyTarget.MyContent.val = {0}", myTarget.MyContent.Val);
            mySource.MyContent.Val = 2;
            Console.WriteLine("MyTarget.MyContent.val = {0}", myTarget.MyContent.Val);
            Console.ReadKey();
        }
    }
}
/*
MyTarget.MyContent.val = 5
MyTarget.MyContent.val = 5 
 */

 

标签:MyTarget,Console,Val,c#,浅度,复制,MyContent,Cloner,public
From: https://www.cnblogs.com/QHMG/p/18051624

相关文章

  • Codeforces Round 806 (Div. 4) A-G(补题)
    A.YESorYES?思路:一次判断三个字母是否是y、e、s的大小写即可。这题是很久前写的,哈哈,马蜂改了不少。。#include<bits/stdc++.h>usingnamespacestd;intn;chars[5];intmain(){ scanf("%d",&n); for(inti=1;i<=n;i++){ scanf("%s",s+1); if......
  • windows 磁盘锁 bitlocker关闭
      要关闭BitLocker等待激活的状态,可以按照以下步骤操作:打开命令提示符(CMD),以管理员身份运行。使用`manage-bde-off`命令关闭BitLocker加密。例如,关闭E盘的BitLocker加密命令为`manage-bde-offE:`。运行命令后,系统会对指定的磁盘进行解密工作,可能需要等......
  • 【代码更新】IIC时序——读写EEPROM
    【代码更新】IIC时序——读写EEPROM    整体代码:1//---->50MHz--->20ns100KHz---->10000ns2`timescale1ns/1ps3moduleeeprom_i2c#(parameterSCL_CYC=1000)//100KHz4(5inputclk,6inputrst_n,78......
  • 关于AI智能生成(AIGC),整理一下你该知道这些
    ​ 什么是AIGC生成式人工智能(Artificial Intelligence Generated Content)定义百度百科生成式人工智能AIGC(Artificial Intelligence Generated Content)是人工智能1.0时代进入2.0时代的重要标志。GAN、CLIP、Transformer、Diffusion、预训练模型、多模态技术、生成算......
  • MBR10200FCT-ASEMI适配开关电源MBR10200FCT
    编辑:llMBR10200FCT-ASEMI适配开关电源MBR10200FCT型号:MBR10200FCT品牌:ASEMI封装:ITO-220AB最大平均正向电流(IF):10A最大循环峰值反向电压(VRRM):200V最大正向电压(VF):0.90V工作温度:-65°C~175°C反向恢复时间:ns重量:1.5615克芯片个数:2芯片尺寸:102mil正向浪涌电流(IFMS):150AMBR1......
  • c#之asp.net的管道处理模式pipeline
    管道在进入管道之前首先要知道asp.netisApi所有的请求是由IIS转发给asp.netisApiHttpWorkerRequest监听asp.netisApi中的队列,HttpWorkerRequest是管道的执行入口 注册中间件的过程在响应请求的时候会触发事件,需要Config中配置以下是HtttpAplacation中的部分事件,在请求进......
  • nacos报错
    1.nacos日志报错com.alibaba.nacos.api.exception.runtime.NacosRuntimeException:ErrCode:500,ErrMsg:Userlimitofinotifywatchesreached解决:这个错误是由于Linux中inotify观察者数量达到上限导致的。在Linux系统中,inotify是用来监视文件系统事件的机制,当监视的文......
  • C# 使用共享内存通信
    //SharedMemoryusing(MemoryMappedFilemmf=MemoryMappedFile.CreateOrOpen("sharedmem",500)){ objectobj=newObject(); ManualResetEventmyevent=newManualResetEvent(false); //写入线程每500ms发送一个消息,并发出一次event Threadth_writer=newThre......
  • .net core UI测试
    背景从后端测试的角度来看前端测试;后端测试  黑盒测试:自动化接口测试,不关心内部实现,只关心入参出参,出于用户角度来测试完整功能;  白盒测试:代码层单元测试,关心内部实现,聚焦核心方法,出于开发角度来测试部分核心功能;前端测试  黑盒测试:(待实现)  白盒测试:(未实现)......
  • mysqldump: Error: Binlogging on server not active
    1.问题今天在备份数据库时遇到问题,提示二进制日志尚未开启,无法使用--master-data=2选项2.解决启用二进制日志记录,打开MySQL配置文件(通常是my.cnf或my.ini),添加以下选项即可。保存并重新启动MySQL服务器#开启二进制日志binloglog-bin=mysql-bin#开启Binlog一般只需......