zoukankan      html  css  js  c++  java
  • c#静态扩展方法,字典的克隆扩展方法

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace CS扩展
    {
        class Program
        {
            static void Main(string[] args)
            {
                Dictionary<int, int> myDic = new Dictionary<int, int>();
                myDic.Add(99, 56);
                myDic.Add(23, 11);
    
                Dictionary<int, int> tttdic = new Dictionary<int, int>();
                tttdic = myDic.Clone();
    
                Dictionary<int, int> xxxDic = new Dictionary<int, int>();
                xxxDic = myDic;
    
                myDic[99] = 5555555;
                Console.WriteLine(myDic[99]);
                Console.WriteLine(tttdic[99]);
                Console.WriteLine(xxxDic[99]);
                Console.ReadKey();
            }
        }
    
        public static class CSExtend
        {
            public static Dictionary<T, V> Clone<T, V>(this Dictionary<T, V> dictionary)
            {
                using (Stream objectStream = new MemoryStream())
           {

              //利用 System.Runtime.Serialization序列化与反序列化完成引用对象的复制
              IFormatter formatter = new BinaryFormatter();
              formatter.Serialize(objectStream, dictionary);
              objectStream.Seek(0, SeekOrigin.Begin);
              return (Dictionary<T, V>)formatter.Deserialize(objectStream);

           }
    } } }

    c#静态扩展方法,字典的克隆扩展方法

    这种方法是采用序列化反序列的克隆,是最靠谱的克隆,同样这种写法可以应用到类克隆,List克隆,都可以

    参考文章:https://blog.csdn.net/alicehyxx/article/details/16118373

    原方法:可自由修改

    public static T Clone<T>(T RealObject)   
      
    {   
         using (Stream objectStream = new MemoryStream())   
         {   
                //利用 System.Runtime.Serialization序列化与反序列化完成引用对象的复制  
                 IFormatter formatter = new BinaryFormatter();   
                 formatter.Serialize(objectStream, RealObject);   
                 objectStream.Seek(0, SeekOrigin.Begin);   
                 return (T)formatter.Deserialize(objectStream);   
         }   
    }  

    ===========================2018年3月23日15:08:49更新==================================

    万能克隆扩展方法

        /// <summary>
        /// 深度克隆,字典和List可以直接.Clone,如果是类的话那个类必须得打上[Serializable]标签
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="RealObject"></param>
        /// <returns></returns>
        public static T Clone<T>(this T RealObject)
        {
            using (Stream objectStream = new MemoryStream())
            {
                //利用 System.Runtime.Serialization序列化与反序列化完成引用对象的复制  
                IFormatter formatter = new BinaryFormatter();
                formatter.Serialize(objectStream, RealObject);
                objectStream.Seek(0, SeekOrigin.Begin);
                return (T)formatter.Deserialize(objectStream);
            }
        }
  • 相关阅读:
    【转】nginx(一) nginx详解
    美好生活需要全方位的保障
    Oracle私网mtu滚动修改实施方案
    小知识:后台执行Oracle创建索引免受会话中断影响
    小知识:Oracle RAC添加服务名实现单节点访问
    Windows平台安装Oracle11.2.0.4客户端报错INS-30131
    小知识:如何赋予用户查看所有存储过程和触发器的权限
    小知识:如何判定crontab任务的执行频度
    小知识:解决EXP-00003的报错
    Oracle删除索引规范
  • 原文地址:https://www.cnblogs.com/sanyejun/p/8627060.html
Copyright © 2011-2022 走看看