摘要:
MemberwiseClone方法创建一个浅表副本,具体来说就是创建一个新对象,然后将当前对象的非静态字段复制到该新对象。如果字段是值类型的,则对该字段执行逐位复制。如果字段是引用类型,则复制引用但不复制引用的对象;因此,原始对象及其复本引用同一对象。为了实现深度复制,我们就必须遍历有相互引用的对象构成的图,并需要处理其中的循环引用结构。这无疑是十分复杂的。幸好借助.Net的序列化和反序列化机制,可以十分简单的深度Clone一个对象。原理很简单,首先将对象序列化到内存流中,此时对象和对象引用的所用对象的状态都被保存到内存中。.Net的序列化机制会自动处理循环引用的情况。然后将内存流中的状态信息 阅读全文
posted @ 2013-07-12 14:56
于为
阅读(447)
评论(0)
推荐(0)
摘要:
泛型与非泛型集合类在C#程序中是非常重要的一个基础概念,这里列一个表来进行对比:非泛型集合类泛型集合类描述ArrayListList表示具有动态大小的对象数组HashtableDictionary由键值对组成的集合SortedListSortedList和字典相似但有排序功能的集合QueueQueue表示标准的先进先出(FIFO)队列StackStack后进先出(LIFO)队列,提供压入和弹出功能 泛型与非泛型集合类在概念和功能上各有不同,其中非泛型集合类在取出值时需要进行类型的转换操作,如果加入值类型会引起装箱和拆箱的操作,这会带来巨大的性能额外开销,如果掌握好泛型数组之后可以不再需要用非泛 阅读全文
posted @ 2013-07-12 13:59
于为
阅读(469)
评论(0)
推荐(0)