<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title=".NET中栈和堆的比较(3)" id="card1">
<p> 游客</p><p>
标题:.NET中栈和堆的比较(3)<br/>
正文:<br/>
 .NET中栈和堆的比较(2)   .NET中栈和堆的比较(4) 原文出处http://www.c-sharpcorner.com/UploadFile/rmcochran/chsarp_memory401152006094206AM/chsarp_memory4.aspx尽管在.NET framework下我们并不需要担心内存管理和垃圾回收(Garbage Collection)，但是我们还是应该了解它们，以优化我们的应用程序。同时，还需要具备一些基础的内存管理工作机制的知识，这样能够有助于解释我们日常程序编写中的变量的行为。在本文中我们将涉及到堆中引用变量引起的问题，以及如何使用ICloneable接口来解决该问题。 * 副本并不是真的副本为了清楚的阐明问题，让我们来比较一下当堆中存在值类型和引用类型时都发生了些什么。首先来看看值类型，如下面的类和结构。这里有一个类Dude，它的成员中有一个string型的Name字段及两个Shoe类型的字段--RightShoe、LeftShoe，还有一个CopyDude()方法可以很容易地生成新的Dude实例。public struct Shoe{  public 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 + &amp;quot; : Dude!, I have a &amp;quot; + R<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=309&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=309&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=309&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=309&amp;Page=3">[3]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=309&amp;Page=6">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=309">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=309">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>