前言 在本系列的第一篇文章《C#堆栈对比(Part Two)》中,介绍了值类型和引用类型在参数传递时的不同,本文将讨论如何应用ICloneable接口实现去修复引在堆上的用变量所带来的问题。 ...
前言
在本系列的第一篇文章《C#堆栈对比(Part Two)》中,介绍了值类型和引用类型在参数传递时的不同,本文将讨论如何应用ICloneable接口实现去修复引在堆上的用变量所带来的问题。
本文是系列文章的第三部分。
注:限于本人英文理解能力,以及技术经验,文中如有错误之处,还请各位不吝指出。
目录
C#堆栈对比(Part One)
C#堆栈对比(Part Two)
C#堆栈对比(Part Three)
C#堆栈对比(Part Four)
拷贝不是复制那么简单
为了更清楚的表达这个问题,我们来考察一下堆上的值类型与堆上的引用类型。首先,我们来看看值类型。跟随如下的类和结构体,我们有一个包含Name和两个Shoe字段的Dude类。我们有一个CopyDude方法方便我们产生一个新的Dude(**)。
public struct Shoe{ public get='_blank'>string Color;} public class Dude{ public string Name; public Shoe RightShoe; public Shoe LeftShoe; public Dude CopyDude() { Dude newPerson = new Dude(); newPerson.Name = Name; newPerson.LeftShoe = LeftShoe; newPerson.RightShoe = RightShoe; return newPerson; } public override string ToString() { return (Name + " : Dude!, I have a " + RightShoe.Color + " shoe on my right foot, and a " + LeftShoe.Color + " on my left foot."); }}
原标题:译文
关键词:
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。