C# ArrayList深度拷贝

   C#中的赋值分为值赋值和引用赋值,在ArrayList中经常需要用到深度拷贝,教程中一般都用介绍使用IClone接口。

   本文介绍另外一种思路:

   可以将需要赋值的ArrayList先序列化,然后再反序列化,甚至先保存到一个文件中在读回的方式,后一种方式消耗的时间肯定要多于前一种方式。不过先序列化,然后再反序列化与使用IClone接口之间到底有多大的性能差异还没仔细研究,不过对于一般的小程序而言,用序列化-反序列化来实现深度拷贝更加简明。

 

列子:

......

        public void Clone(List inputList)
        {
            BinaryFormatter Formatter = new BinaryFormatter(null, new StreamingContext(StreamingContextStates.Clone));
            System.IO.MemoryStream stream = new System.IO.MemoryStream();
            Formatter.Serialize(stream, inputList);
            stream.Position = 0;
            flightList = Formatter.Deserialize(stream) as List;
            stream.Close();
        }

......

 

你可能感兴趣的:(/C#,ASP.Net/)