摘要: 关于浅拷贝和深拷贝,我的理解不是很清晰,简单说来,我认为是这样子: 浅拷贝:引用成员在被拷贝时仅复制源对象中引用成员的地址到新对象中,所以在新对象中对引用成员进行更改会影响到源对象(除对引用成员进行赋值外)。 深拷贝:引用成员在拷贝时新建一个引用对象到新对象中,且将源对象中引用对象的成员值复制到新对象的引用对象中,所以在新对象中对引用成员进行更改不会影响源对象。 说起来概念也简单,我想大家纠结的是如何实现深拷贝?浅拷贝的实现很简单,调用Object.MemberwiseClone就万事大吉了。在网上找了一个通过序列化实现深拷贝的例子,自己改了改,欢迎大家品头论足。 这段程序的输出为: objA 阅读全文
posted @ 2011-04-14 18:00 StudyNLP 阅读(831) 评论(0) 推荐(0)
摘要: 1.深拷贝与浅拷贝 拷贝即是通常所说的复制(Copy)或克隆(Clone),对象的拷贝也就是从现有对象复制一个“一模一样”的新对象出来。虽然都是复制对象,但是不同的复制方法,复制出来的新对象却并非完全一模一样,对象内部存在着一些差异。通常的拷贝方法有两种,即深拷贝和浅拷贝,那二者之间有何区别呢?MSDN里对IClone接口的Clone方法有这样的说明:在深层副本中,所有的对象都是重复的;而在浅表副本中,只有顶级对象是重复的,并且顶级以下的对象包含引用。可以看出,深拷贝和浅拷贝之间的区别在于是否复制了子对象。这如何理解呢?下面我通过带有子对象的代码来验证二者的区别。首先定义两个类型:Studen 阅读全文
posted @ 2011-04-14 17:50 StudyNLP 阅读(1299) 评论(1) 推荐(2)
摘要: 介绍枚举是一个指定的常数,其基础类型可以是除Char外的任何整型。如果没有显式声明基础类型,则使用Int32。编程语言通常提供语法来声明由一组已命名的常数和它们的值组成的枚举。定义默认基数从O开始,也可指定数值。enumDays{Saturday=1,Sunday,Monday,Tuesday,Wednesday,Thursday,Friday};enumColors{Red=1,Green=2,Blue=4,Yellow=8};使用ColorsmyColors=Colors.Red;stringstrColor=myColors.tostring();intIntColor=(int)myC 阅读全文
posted @ 2011-04-14 11:41 StudyNLP 阅读(37586) 评论(0) 推荐(3)