积极答复者
请问从system.objec.MemberwiseClone()派生出的方法利用的是什么技术?

问题
-
请问下面从system.object.MemberwiseClone()派生出的方法,利用是类型的转换、类的多态性、还是this关键字的对象指定,还是什么其他技术?
Person other = (Person) this.MemberwiseClone();
去掉this也能执行,如:
Person other = (Person) MemberwiseClone();
上述两者有何区别?
万物皆变,规则永恒。
答案
-
Wavetekgroup 你好,
MemberwiseClone()方法是Object类的一个受保护方法,实现了对象的浅拷贝。
受保护的MemberwiseClone()方法返回目前对象的一个浅拷贝,该方法不能被子类重写。浅拷贝仅仅是对象的一份按位拷贝,也就是说,对该对象里面的值类型变量进行赋值拷贝,对该对象里面的引用类型变量进行句柄拷贝,这样拷贝后的引用变量将持有对同一块内存的引用。关于this关键字,它是指向当前的类,所以加不加this都可以,没有什么区别,不加的话默认就是this。
希望这些对你有帮助。
Mio
Mio Miao[MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
- 已编辑 Mio_MiaoModerator 2011年3月15日 9:31
- 已标记为答案 wavetekgroup 2011年3月15日 12:13
-
(Person)是把MemberwiseClone()方法返回的Object类强制转换为Person类。是Object类向Person类的类型转换。
Mio Miao[MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
- 已标记为答案 wavetekgroup 2011年3月15日 12:13
-
(Person)Object 这样是不行的,引用类型之间的强制转换,是更改该对象的引用的值的类型,也就是说(Person)后面不是跟Object类,而是跟Object类的对象。MemberwiseClone()方法返回目前对象的一个浅拷贝,(Person)是把这个返回的对象进行强制类型转换。具体关于强制类型转换你可以参考这个链接:http://msdn.microsoft.com/zh-cn/library/ms173105.aspx。
Mio Miao[MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
- 已标记为答案 wavetekgroup 2011年3月15日 12:13
全部回复
-
Wavetekgroup 你好,
MemberwiseClone()方法是Object类的一个受保护方法,实现了对象的浅拷贝。
受保护的MemberwiseClone()方法返回目前对象的一个浅拷贝,该方法不能被子类重写。浅拷贝仅仅是对象的一份按位拷贝,也就是说,对该对象里面的值类型变量进行赋值拷贝,对该对象里面的引用类型变量进行句柄拷贝,这样拷贝后的引用变量将持有对同一块内存的引用。关于this关键字,它是指向当前的类,所以加不加this都可以,没有什么区别,不加的话默认就是this。
希望这些对你有帮助。
Mio
Mio Miao[MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
- 已编辑 Mio_MiaoModerator 2011年3月15日 9:31
- 已标记为答案 wavetekgroup 2011年3月15日 12:13
-
(Person)是把MemberwiseClone()方法返回的Object类强制转换为Person类。是Object类向Person类的类型转换。
Mio Miao[MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
- 已标记为答案 wavetekgroup 2011年3月15日 12:13
-
(Person)Object 这样是不行的,引用类型之间的强制转换,是更改该对象的引用的值的类型,也就是说(Person)后面不是跟Object类,而是跟Object类的对象。MemberwiseClone()方法返回目前对象的一个浅拷贝,(Person)是把这个返回的对象进行强制类型转换。具体关于强制类型转换你可以参考这个链接:http://msdn.microsoft.com/zh-cn/library/ms173105.aspx。
Mio Miao[MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
- 已标记为答案 wavetekgroup 2011年3月15日 12:13
-
不客气,很高兴可以帮助你。另外,如果你的问题已经解决,你可以考虑把对你有用的回复“标记为答复”,这样也可以帮助论坛里其他和你遇到类似问题的朋友。如果你还有其他新的问题,欢迎你在论坛里继续发帖提问。
Mio Miao[MSFT]
MSDN Community Support | Feedback to us
Get or Request Code Sample from Microsoft
Please remember to mark the replies as answers if they help and unmark them if they provide no help.