C#Copy

1、浅拷贝(值类型):

public class LightCopy
    {
        public int Val
        {
            get;
            set;
        }

        public LightCopy(int ival)
        {
            Val = ival;
        }

        public object getCopy()
        {
            return MemberwiseClone();  //浅表副本
        }
    }

测试代码及结果

            LightCopy lcopy = new LightCopy(8);
            MessageBox.Show("" + lcopy.Val);    //8
            LightCopy lcopy1 = (LightCopy)lcopy.getCopy();
            MessageBox.Show("" + lcopy1.Val);   //8
            lcopy1.Val = 3;
            MessageBox.Show("" + lcopy1.Val);   //3
            MessageBox.Show("" + lcopy.Val);    //8    

2、浅拷贝(引用类型):

    public class Content
    {
        public int Val
        {
            get;
            set;
        }
    }

    public class LightCopy
    {
        public Content myContent; 

        public LightCopy(int val)
        {
            myContent = new Content();
            myContent.Val = val;
        }

        public object getCopy()
        {
            return MemberwiseClone();
        }
       
    }

测试代码及结果

            LightCopy lcpy = new LightCopy(8);
            MessageBox.Show("" + lcpy.myContent.Val);    //8
            LightCopylcpy1 = (DeepCopy)lcpy.getCopy();
            MessageBox.Show("" + lcpy1.myContent.Val);   //8
            lcpy.myContent.Val = 3;
            MessageBox.Show("" + lcpy1.myContent.Val);   //3
            MessageBox.Show("" + lcpy.myContent.Val);    //3    

3、深拷贝

        #region ICloneable 成员

        //如果类型继承自ICloneable,但是同时它不是一个Sealed类型的话,它们的子类的默认Clone方法会带来BUG(子类的Clone方法会返回父类的副本,而不是子类本身)。这会逼迫所有的子类都重写Clone方法;
        public object Clone()
        {
            //DeepCopy deepcpy = new DeepCopy(myContent.Val);
            return this.MemberwiseClone();//浅拷贝    
        }

        #endregion

       //深拷贝
public DeepCopy DeepClone() { using (Stream objectStream = new MemoryStream()) { IFormatter formatter = new BinaryFormatter(); formatter.Serialize(objectStream, this); objectStream.Seek(0, SeekOrigin.Begin); return formatter.Deserialize(objectStream) as DeepCopy; } }

 

转载于:https://www.cnblogs.com/shenchao/p/4121525.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C#中,可以使用PostgreSQL的COPY命令来进行数据的导入和导出操作。COPY命令可以比INSERT语句更快地加载大量数据,并且每行的开销非常低,尤其是在没有触发器的情况下。 在你提供的代码中,可以看到使用了Npgsql库的NpgsqlParameter来传递参数,并使用IDBHelper接口的ExecuteNonQuery方法执行了插入操作。 需要注意的是,COPY命令和psql中的\copy不是一回事。\copy命令实际上是调用了COPY FROM STDIN或COPY TO STDOUT,并且返回数据或存储可以被psql客户端访问的文件数据。因此,使用\copy时,文件的可访问性和访问权限取决于客户端,而不是服务器。 所以,根据你的代码和问题,你可以使用PostgreSQL的COPY命令来进行数据的导入和导出操作,并且在C#中使用Npgsql库来执行相关的操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [C# 访问PostgreSQL 数据库](https://blog.csdn.net/u013455803/article/details/20307289)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [PostgreSQL copy 命令教程详解](https://blog.csdn.net/weixin_34369521/article/details/113380736)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值