<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_山天大畜</title><subtitle type="text">没有目标的人都只在帮有目标的人完成目标</subtitle><id>http://feed.cnblogs.com/blog/u/60417/rss</id><updated>2011-03-09T01:10:21Z</updated><author><name>山天大畜</name><uri>http://www.cnblogs.com/cdts_change/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cdts_change/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/60417/rss"/><entry><id>http://www.cnblogs.com/cdts_change/archive/2010/11/23/1885881.html</id><title type="text">Silverlight数独游戏</title><summary type="text">最近开发了一个数独游戏，用Silverlight实现。放在了Codeplex上面，便于以后不断升级维护。真正写代码的时候就会发现，自己要学的东西还有很多啊~下面是在线演示：下载地址可以去我的Codeplex网站上下载：这里下载2010.11.23</summary><published>2010-11-23T13:03:00Z</published><updated>2010-11-23T13:03:00Z</updated><author><name>山天大畜</name><uri>http://www.cnblogs.com/cdts_change/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cdts_change/archive/2010/11/23/1885881.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cdts_change/archive/2010/11/23/1885881.html"/><content type="html">&lt;p&gt;最近开发了一个数独游戏，用Silverlight实现。放在了Codeplex上面，便于以后不断升级维护。真正写代码的时候就会发现，自己要学的东西还有很多啊~&lt;/p&gt;&lt;p&gt;下面是在线演示：&lt;/p&gt;&lt;div id="silverlightControlHost"&gt;&lt;object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="720" height="670"&gt;&lt;param name="source" value="http://files.cnblogs.com/cdts_change/CdtsGame.UISudoku.xap" /&gt;&lt;param name="onError" value="onSilverlightError" /&gt;&lt;param name="background" value="white" /&gt;&lt;param name="minRuntimeVersion" value="4.0.50826.0" /&gt;&lt;param name="autoUpgrade" value="true" /&gt; &lt;a href="http://go.microsoft.com/fwlink/?LinkID=149156&amp;amp;v=4.0.50826.0" style="text-decoration:none"&gt; &lt;img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="获取 Microsoft Silverlight" style="border-style:none" /&gt; &lt;/a&gt; &lt;/object&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;下载地址可以去我的Codeplex网站上下载：&lt;/p&gt;&lt;p&gt;&lt;a href="http://cdtsgame.codeplex.com/releases/view/56199"&gt;这里下载&lt;/a&gt;&lt;/p&gt;&lt;p align="right"&gt;2010.11.23&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cdts_change/aggbug/1885881.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/11/23/1885881.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cdts_change/archive/2010/11/14/1877157.html</id><title type="text">Silverlight4 RIA应用开发</title><summary type="text">Silverlight是微软在RIA开发领域的一个重量级产品，其提供的RIA应用框架可以让开发者方便的开发出富有表现力的应用程序，本系列课程由浅入深的介绍Silverlight使用Blend4和Visual Studio2010开发RIA应用。</summary><published>2010-11-14T13:03:00Z</published><updated>2010-11-14T13:03:00Z</updated><author><name>山天大畜</name><uri>http://www.cnblogs.com/cdts_change/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cdts_change/archive/2010/11/14/1877157.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cdts_change/archive/2010/11/14/1877157.html"/><content type="html">&lt;p&gt;&lt;span style="font-size: 10pt; "&gt;Silverlight是微软在RIA开发领域的一个重量级产品，其提供的RIA应用框架可以让开发者方便的开发出富有表现力的应用程序，本系列课程由浅入深的介绍Silverlight使用Blend4和Visual Studio2010开发RIA应用。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/11/14/1877225.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第1讲：Silverlight4的应用设计&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/11/15/1877967.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第2讲：布局码放的讲究&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/11/16/1878820.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第3讲：动画与Behavior&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/11/17/1880161.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第4讲：VSM和Behavior&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/11/21/1883354.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第5讲：用户模板&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/11/24/1887082.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第6讲：OOB特性&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/11/25/1888110.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第7讲：WebCam应用&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/11/26/1889223.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第8讲：右键菜单和打印功能&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/11/28/1890584.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第9讲：MVVM架构&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/11/29/1891437.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第10讲：Blend中的SketchFlow特性&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/12/01/1893907.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第11讲：多媒体播放器开发&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/12/02/1894938.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第12讲：Silverlight中调用RIA Service&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cdts_change/aggbug/1877157.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/11/14/1877157.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cdts_change/archive/2010/11/13/1867539.html</id><title type="text">C# 3.0 锐利体验</title><summary type="text">本系列课程主要介绍C#3.0 的概览；Lambda表达式；查询表达式LINQ等相关内容。</summary><published>2010-11-13T09:58:00Z</published><updated>2010-11-13T09:58:00Z</updated><author><name>山天大畜</name><uri>http://www.cnblogs.com/cdts_change/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cdts_change/archive/2010/11/13/1867539.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cdts_change/archive/2010/11/13/1867539.html"/><content type="html">&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/11/03/1868519.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第1讲：概览&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/11/05/1870297.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第2讲：Lambda表达式&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/11/11/1875215.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第3讲：查询表达式LINQ(1)&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/11/12/1876070.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第4讲：查询表达式LINQ(2)&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/11/13/1876569.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第5讲：查询表达式LINQ(3)&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cdts_change/aggbug/1867539.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/11/13/1867539.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cdts_change/archive/2010/11/02/1859759.html</id><title type="text">C# 2.0 锐利体验</title><summary type="text">本系列课程主要介绍C#2.0 的泛型编程；匿名方法、迭代器；局部类型、空属类型、静态类；杂项技术，以及C#语言的未来发展等相关内容。</summary><published>2010-11-02T13:39:00Z</published><updated>2010-11-02T13:39:00Z</updated><author><name>山天大畜</name><uri>http://www.cnblogs.com/cdts_change/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cdts_change/archive/2010/11/02/1859759.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cdts_change/archive/2010/11/02/1859759.html"/><content type="html">&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/26/1861938.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第1讲：泛型编程&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/29/1864818.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第2讲：匿名方法、迭代器&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/31/1865753.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第3讲：局部类型、空属类型、静态类&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/11/02/1867554.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第4讲：杂项技术，以及C#语言的未来发展&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cdts_change/aggbug/1859759.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/11/02/1859759.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cdts_change/archive/2010/11/01/1866663.html</id><title type="text">C#面向对象设计模式纵横谈</title><summary type="text">本系列从创建型模式、结构型模式和行为型模式三个方面归纳总结了23个设计模式的内容。</summary><published>2010-11-01T14:04:00Z</published><updated>2010-11-01T14:04:00Z</updated><author><name>山天大畜</name><uri>http://www.cnblogs.com/cdts_change/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cdts_change/archive/2010/11/01/1866663.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cdts_change/archive/2010/11/01/1866663.html"/><content type="html">&lt;p&gt;&lt;font color="#ff0000" size="3"&gt;&lt;strong&gt;第I章 开篇&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/09/19/1831336.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第1讲：面向对象设计模式与原则&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#ff0000" size="3"&gt;&lt;strong&gt;第II章 创建型模式&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/09/21/1832808.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第2讲：Singleton 单件&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/09/23/1833220.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第3讲：Abstract Factory 抽象工厂模式&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/09/24/1834127.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第4讲：Builder 生成器模式&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/09/26/1836344.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第5讲：Factory Method 工厂方法模式&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/09/28/1837946.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第6讲：Prototype 原型模式&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#ff0000" size="3"&gt;&lt;strong&gt;第III章 结构型模式&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/01/1839756.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第7讲：Adapter 适配器模式&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/01/1840686.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第8讲：Bridge 桥接模式&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/03/1841645.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第9讲：Composite 组合模式&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/03/1841678.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第10讲：Decorator 装饰模式&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/04/1842137.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第11讲：Facade 外观模式&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/06/1844724.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第12讲：Flyweight 享元模式&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/07/1845186.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第13讲：Proxy 代理模式&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#ff0000" size="3"&gt;&lt;strong&gt;第IV章 行为型模式&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/08/1846159.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第14讲：Template Method 模板方法&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/10/1847477.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第15讲：Command 命令模式&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/12/1849318.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第16讲：Interpreter 解释器模式&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/14/1850826.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第17讲：Mediator 中介者模式&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/17/1853689.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第18讲：Iterator 迭代器模式&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/19/1855894.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第19讲：Observer 观察者模式&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/21/1857835.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第20讲：Chain Of Responsibility 职责链模式&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/23/1859543.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第21讲：Memento 备忘录模式&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/25/1860766.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第22讲：State 状态模式&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/28/1863894.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第23讲：Strategy 策略模式&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/30/1865143.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第24讲：Visitor 访问者模式&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#ff0000" size="3"&gt;&lt;strong&gt;第V章 总结&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/11/01/1866661.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第25讲：设计模式总结&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cdts_change/aggbug/1866663.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/11/01/1866663.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cdts_change/archive/2010/10/24/1844422.html</id><title type="text">.NET 开发从入门到精通</title><summary type="text">.NET平台及其开发工具为今天的开发者提供了可靠、易用的平台，使得我们可以更加从容的面对Windows应用程序开发的挑战。本系列课程介绍微软基于.NET平台的开发工具Visual Studio .NET 2003和开发.NET应用程序的内容。</summary><published>2010-10-24T06:24:00Z</published><updated>2010-10-24T06:24:00Z</updated><author><name>山天大畜</name><uri>http://www.cnblogs.com/cdts_change/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cdts_change/archive/2010/10/24/1844422.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cdts_change/archive/2010/10/24/1844422.html"/><content type="html">&lt;p&gt;&lt;font size="2"&gt;&lt;strike&gt;第1讲：使用.NET开发Windows应用程序 - 介绍和基本概念&lt;/strike&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size="2"&gt;&lt;strike&gt;第2讲：在VS.NET中使用Windows Forms创建最好的用户体验&lt;/strike&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size="2"&gt;&lt;strike&gt;第3讲：快速将高质量产品投入市场 &amp;#8212; 使用Visual Studio.NET进行快速开发&lt;/strike&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size="2"&gt;&lt;strike&gt;第4讲：Windows窗体开发中的面向对象概念&lt;/strike&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/06/1844590.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第5讲：Windows应用程序界面美化&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/07/1845233.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第6讲：如何使用.NET开发Windows应用程序&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/10/1847286.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第7讲：优化.NET异常处理&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/12/1848365.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第8讲：ADO.NET为应用程序提供高性能的数据访问技术&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/13/1850406.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第9讲：安全的配置并部署.NET Windows Forms应用程序&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/16/1853309.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第10讲：使用.NET开发大型的企业级应用程序&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/18/1855230.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第11讲：提高Web应用程序的用户体验&amp;#8212;&amp;#8212;使用智能客户端开发分布式的Windows Forms应用程序&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/20/1857149.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第12讲：将安全隐患扼杀在摇篮之中&amp;#8212;&amp;#8212;用Microsoft .NET来保护数据和应用程序的安全&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/23/1858811.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第13讲：深入ADO.NET开发&amp;#8212;高级数据访问技术&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/24/1859734.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第14讲：复杂的问题，一流的解决方案&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cdts_change/aggbug/1844422.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/24/1844422.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cdts_change/archive/2010/10/17/1853838.html</id><title type="text">社会心理学（第8版）</title><summary type="text">本书被美国700多所大学和学院心理学课程所采用，是这一领域的主导教材，已经成为评其他教材的标准。本书将基础研究与实践应用完美地结合在一起，以富有逻辑性的组织结构引领学生了解人们是如何思考、影响他人并与他人建立联系的。是人们认识自我、了解社会、理解自己与社会之间关系的最佳的指导性书籍。</summary><published>2010-10-17T13:54:00Z</published><updated>2010-10-17T13:54:00Z</updated><author><name>山天大畜</name><uri>http://www.cnblogs.com/cdts_change/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cdts_change/archive/2010/10/17/1853838.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cdts_change/archive/2010/10/17/1853838.html"/><content type="html">&lt;p align="right"&gt;（美）戴维&amp;#183;迈尔斯&lt;/p&gt;&lt;p align="right"&gt;2006.1.1&lt;/p&gt;&lt;p&gt;&lt;font color="#0080ff" size="2"&gt;本书被美国700多所大学和学院心理学课程所采用，是这一领域的主导教材，已经成为评其他教材的标准。&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#0080ff" size="2"&gt;本书将基础研究与实践应用完美地结合在一起，以富有逻辑性的组织结构引领学生了解人们是如何思考、影响他人并与他人建立联系的。是人们认识自我、了解社会、理解自己与社会之间关系的最佳的指导性书籍。&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;font color="#f79646" size="3"&gt;&lt;strong&gt;本书结构&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;本书开篇以单独的一章介绍社会心理学的研究方法。这一章随后告诫学生如何才能使研究结果显而易见（一旦你了解了它们），以及社会心理学家如何将自己的价值观念渗透到学科领域当中。另外，本书新增加了一个部分&amp;#8220;社会心理学中的一些重要思想&amp;#8221;，它介绍了一些令人兴奋的话题：我们如何构筑社会现实、社会直觉、社会影响、个人态度和性格倾向，生理行为以及它们在日常生活中的应用。这样安排章节的目的是为了学生在学习后面的章节之前有一个充分的知识准备。&lt;/p&gt;&lt;p&gt;本书在随后的部分将围绕社会心理学的定义展开：社会心理学是对人们的思维方式（第一编）、社会影响（第二编）、人际关系（第三编）以及社会心理学原理在日常生活中应用（第四编）的科学研究。&lt;/p&gt;&lt;p&gt;第一编 探讨社会思维&amp;#8212;&amp;#8212;我们如何看待自己和他人。它可以评价我们的印象、直觉和解释的准确性。&lt;/p&gt;&lt;p&gt;第二编 探讨社会影响。通过理解态度的文化因素和学习从众、说服以及群体影响的本质，我们能更好地认识到作用在我们身上的微妙的社会力量。&lt;/p&gt;&lt;p&gt;第三编 分析消极和积极的社会关系的态度和行为表现：从偏见到攻击，从吸引到互助。这一部分还将同时探讨冲突与和解的动力学。&lt;/p&gt;&lt;p&gt;第四编 分析如何将我们在前面章节中学习到的概念应用到社会生活中。社会心理学的应用贯穿于全书的各个章节，但主要集中在第14章（社会心理学在临床领域中的应用），第15章（这会心理学在司法领域中的应用），以及第16章（社会心理学与可持续发展的未来）。&lt;/p&gt;&lt;p&gt;我一直坚信梭罗那句名言：&amp;#8220;一切存在的事物都可以用通俗的语言轻松而自然地加以表达&amp;#8221;，所以我一直努力构思，以期出版一本尽可能有吸引力的并能给人留下深刻印象的著作。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;font color="#f79646" size="3"&gt;&lt;strong&gt;前言&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/11/04/1869458.html" target="_blank"&gt;&lt;font color="#0080ff" size="2"&gt;第1章 社会心理学导论&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;font color="#f79646" size="3"&gt;&lt;strong&gt;第一编 社会思维&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;第2章 社会中的自我&lt;/p&gt;&lt;p&gt;第3章 社会信念与判断&lt;/p&gt;&lt;p&gt;第4章 行为和态度&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;font color="#f79646" size="3"&gt;&lt;strong&gt;第二编 社会影响&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;第5章 基因、文化和性别&lt;/p&gt;&lt;p&gt;第6章 从众&lt;/p&gt;&lt;p&gt;第7章 说服&lt;/p&gt;&lt;p&gt;第8章 群体影响&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;font color="#f79646" size="3"&gt;第三编 社会关系&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;第9章 偏见：不喜欢他人&lt;/p&gt;&lt;p&gt;第10章 攻击行为：伤害他人&lt;/p&gt;&lt;p&gt;第11章 吸引和亲密：喜欢他人和爱他人&lt;/p&gt;&lt;p&gt;第12章 利他：帮助他人&lt;/p&gt;&lt;p&gt;第13章 冲突与和解&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;font color="#f79646" size="3"&gt;第四编 应用社会心理学&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;第14章 社会心理学在临床领域中的应用&lt;/p&gt;&lt;p&gt;第15章 社会心理学在司法领域中的应用&lt;/p&gt;&lt;p&gt;第16章 社会心理学与可持续发展的未来&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cdts_change/aggbug/1853838.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/17/1853838.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cdts_change/archive/2010/10/04/1842045.html</id><title type="text">ASP.NET MVC2程序开发入门到精通</title><summary type="text">ASP.NET MVC2 技术是微软又一个新的WEB开发技术，也是微软在ASP.NET 平台上有一个产品，这一技术旨在使用MVC架构呈现ASP.NET，给开发者提供更多更好的可定制内容。是广大WEB开发者继ASP.NET WebForm之外的另一好选择，本系列课程共12讲，介绍了这一技术的方方面面，为您了解和掌握ASP.NET MVC提供方便。</summary><published>2010-10-04T09:39:00Z</published><updated>2010-10-04T09:39:00Z</updated><author><name>山天大畜</name><uri>http://www.cnblogs.com/cdts_change/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cdts_change/archive/2010/10/04/1842045.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cdts_change/archive/2010/10/04/1842045.html"/><content type="html">&lt;p&gt;&lt;span style="font-size: 10pt; "&gt;ASP.NET MVC2 技术是微软又一个新的WEB开发技术，也是微软在ASP.NET 平台上有一个产品，这一技术旨在使用MVC架构呈现ASP.NET，给开发者提供更多更好的可定制内容。是广大WEB开发者继ASP.NET WebForm之外的另一好选择，本系列课程共12讲，介绍了这一技术的方方面面，为您了解和掌握ASP.NET MVC提供方便。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;font color="#0080ff" size="2"&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/09/18/1830325.html" target="_blank"&gt;&lt;span style="color: #0080ff; "&gt;第1讲：MVC架构概述&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#0080ff" size="2"&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/09/20/1831386.html" target="_blank"&gt;&lt;span style="color: #0080ff; "&gt;第2讲：MVC范例分享&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#0080ff" size="2"&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/09/21/1832874.html" target="_blank"&gt;&lt;span style="color: #0080ff; "&gt;第3讲：MVC中的View层使用技巧(上讲)&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#0080ff" size="2"&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/09/23/1833538.html" target="_blank"&gt;&lt;span style="color: #0080ff; "&gt;第4讲：MVC中的View层使用技巧(下讲)&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#0080ff" size="2"&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/09/25/1834913.html" target="_blank"&gt;&lt;span style="color: #0080ff; "&gt;第5讲：MVCRoute和urls&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#0080ff" size="2"&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/09/28/1837226.html" target="_blank"&gt;&lt;span style="color: #0080ff; "&gt;第6讲：深入理解ROUTES&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#0080ff" size="2"&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/09/29/1838833.html" target="_blank"&gt;&lt;span style="color: #0080ff; "&gt;第7讲：Controller入门&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#0080ff" size="2"&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/01/1840621.html" target="_blank"&gt;&lt;span style="color: #0080ff; "&gt;第8讲：深入Controller&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#0080ff" size="2"&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/02/1841475.html" target="_blank"&gt;&lt;span style="color: #0080ff; "&gt;第9讲：使用Filter特性&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#0080ff" size="2"&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/03/1841733.html" target="_blank"&gt;&lt;span style="color: #0080ff; "&gt;第10讲：整合AJAX应用&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#0080ff" size="2"&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/04/1841999.html" target="_blank"&gt;&lt;span style="color: #0080ff; "&gt;第11讲：MVC程序安全限定&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#0080ff" size="2"&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/04/1842042.html" target="_blank"&gt;&lt;span style="color: #0080ff; "&gt;第12讲：MVC中的测试驱动开发&lt;/span&gt;&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/cdts_change/aggbug/1842045.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/10/04/1842045.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cdts_change/archive/2010/09/12/1824513.html</id><title type="text">StringBuilder研究和探索</title><summary type="text">由于String类型代表的是一个不可变的字符串，所以BCL提供了另一个名为System.Text.StringBuilder的类型，它允许我们有效的对字符串的字符执行动态操作，以创建一个String。</summary><published>2010-09-12T11:05:00Z</published><updated>2010-09-12T11:05:00Z</updated><author><name>山天大畜</name><uri>http://www.cnblogs.com/cdts_change/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cdts_change/archive/2010/09/12/1824513.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cdts_change/archive/2010/09/12/1824513.html"/><content type="html">&lt;p&gt;由于String类型代表的是一个不可变的字符串，所以BCL提供了另一个名为System.Text.StringBuilder的类型，它允许我们有效的对字符串的字符执行动态操作，以创建一个String。&lt;/p&gt;  &lt;p&gt;从逻辑上说，StringBuilder对象中包含一个字段，它引用由Char结构构成的一个数组。StringBuilder的成员允许我们操作这个字符，有效的缩减字符串的大小或者更改字符串中的字符。如果字符串变大，超过已经分配的字符的大小，StringBuilder就会自动的分配一个全新的、更大的数组，并开始使用新的数组，前一个数组会被垃圾回收器回收。用StringBuilder对象构建好字符串之后，为了将StringBuilder的字符&amp;#8220;转换&amp;#8221;成一个String，只需调用StringBuilder的ToString方法，在内部，该方法只是返回对StringBuilder内部维护的字符串的字段的一个引用，执行效率非常快，因为它不需要进行字符数组复制。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font size="2"&gt;&lt;strong&gt;StringBuilder既是具体建造者（Builder）又是指导者（Director），最终生成一个复杂的String对象作为产品（Product）。在具体建造者只有一个的情况下，如果抽象建造者角色已经被省略掉，那么还可以省略掉指导者角色。让Builder角色自己扮演指导者与建造者双重角色。&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;   &lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt; Fields&lt;/span&gt;&lt;span style="color: #008000"&gt;       &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;const&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; CapacityField &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;Capacity&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;internal&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;const&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; DefaultCapacity &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #800080"&gt;0x10&lt;/span&gt;&lt;span style="color: #000000"&gt;;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;internal&lt;/span&gt;&lt;span style="color: #000000"&gt; IntPtr m_currentThread;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;internal&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; m_MaxCapacity;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;internal&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;volatile&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; m_StringValue;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;const&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; MaxCapacityField &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;m_MaxCapacity&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;const&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; StringValueField &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;m_StringValue&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;const&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; ThreadIDField &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;m_currentThread&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;;       &lt;br /&gt;&lt;/span&gt;&lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;上面是StringBuilder的一些Fields，其中主要的字段是MaxCapacity和StringValue。 注意StringValue的定义有个Volatile。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;C#中volatile 关键字指示一个字段可以由多个同时执行的线程修改。声明为 volatile 的字段不受编译器优化（假定由单个线程访问）的限制。这样可以确保该字段在任何时间呈现的都是最新的值。可变关键字仅可应用于类或结构字段。不能将局部变量声明为 volatile。&lt;/p&gt;  &lt;p&gt;volatile关键字是一种类型修饰符，用它声明的类型变量表示可以被某些编译器未知的因素更改。   &lt;br /&gt;用volatile关键字声明的变量i每一次被访问时，执行部件都会从i相应的内存单元中取出i的值。 &lt;/p&gt;  &lt;p&gt;没有用volatile关键字声明的变量i在被访问的时候可能直接从cpu的寄存器中取值（因为之前i被访问过，也就是说之前就从内存中取出i的值保存到某个寄存器中），之所以直接从寄存器中取值，而不去内存中取值，是因为编译器优化代码的结果（访问cpu寄存器比访问ram快的多）。 &lt;/p&gt;  &lt;p&gt;以上两种情况的区别在于被编译成汇编代码之后，两者是不一样的。之所以这样做是因为变量i可能会经常变化，保证对特殊地址的稳定访问。 &lt;/p&gt;  &lt;p&gt;volatile关键字是一种类型修饰符，用它声明的类型变量表示可以被某些编译器未知的因素更改，比如：操作系统、硬件或者其它线程等。遇到这个关键字声明的变量，编译器对访问该变量的代码就不再进行优化，从而可以提供对特殊地址的稳定访问。 &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;我们在使用StringBuilder的时候，先new一个实例，看看构造函数&lt;/p&gt;  &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;" onclick="cnblogs_code_show(&amp;#39;3e9139da-496c-4958-9da2-afb01a5405f4&amp;#39;)"&gt;&lt;img style="display: none" id="code_img_opened_3e9139da-496c-4958-9da2-afb01a5405f4" class="code_img_opened" onclick="cnblogs_code_hide(&amp;#39;3e9139da-496c-4958-9da2-afb01a5405f4&amp;#39;,event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" /&gt;     &lt;div id="cnblogs_code_open_3e9139da-496c-4958-9da2-afb01a5405f4" class="cnblogs_code_hide"&gt;     &lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt; StringBuilder() : &lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #800080"&gt;0x10&lt;/span&gt;&lt;span style="color: #000000"&gt;)         &lt;br /&gt;{          &lt;br /&gt;}          &lt;br /&gt;          &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt; StringBuilder(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; capacity) : &lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;.Empty, capacity)         &lt;br /&gt;{          &lt;br /&gt;}          &lt;br /&gt;          &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt; StringBuilder(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; value) : &lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;(value, &lt;/span&gt;&lt;span style="color: #800080"&gt;0x10&lt;/span&gt;&lt;span style="color: #000000"&gt;)         &lt;br /&gt;{          &lt;br /&gt;}          &lt;br /&gt;          &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt; StringBuilder(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; capacity, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; maxCapacity)         &lt;br /&gt;{          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;.m_currentThread &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span&gt; Thread.InternalGetCurrentThread(); &lt;/span&gt;&lt;span style="color: #ff0000"&gt;//获取线程ID&lt;/span&gt;&lt;span&gt;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; (capacity &lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt; maxCapacity)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;throw&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; ArgumentOutOfRangeException(&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;capacity&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;, Environment.GetResourceString(&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;ArgumentOutOfRange_Capacity&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;));         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; (maxCapacity &lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;throw&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; ArgumentOutOfRangeException(&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;maxCapacity&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;, Environment.GetResourceString(&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;ArgumentOutOfRange_SmallMaxCapacity&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;));         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; (capacity &lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;throw&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; ArgumentOutOfRangeException(&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;capacity&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;.Format(CultureInfo.CurrentCulture, Environment.GetResourceString(&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;ArgumentOutOfRange_MustBePositive&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;), &lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;[] { &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;capacity&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt; }));         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; (capacity &lt;/span&gt;&lt;span style="color: #000000"&gt;==&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; capacity &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; Math.Min(&lt;/span&gt;&lt;span style="color: #800080"&gt;0x10&lt;/span&gt;&lt;span style="color: #000000"&gt;, maxCapacity);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;.m_StringValue &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;.GetStringForStringBuilder(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;.Empty, capacity);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;.m_MaxCapacity &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; maxCapacity;         &lt;br /&gt;}          &lt;br /&gt;          &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt; StringBuilder(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; value, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; capacity) : &lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;(value, &lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;, (value &lt;/span&gt;&lt;span style="color: #000000"&gt;!=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;) &lt;/span&gt;&lt;span style="color: #000000"&gt;?&lt;/span&gt;&lt;span style="color: #000000"&gt; value.Length : &lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;, capacity)         &lt;br /&gt;{          &lt;br /&gt;}          &lt;br /&gt;          &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt; StringBuilder(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; value, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; startIndex, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; length, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; capacity)         &lt;br /&gt;{          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;.m_currentThread &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; Thread.InternalGetCurrentThread();         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; (capacity &lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;throw&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; ArgumentOutOfRangeException(&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;capacity&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;.Format(CultureInfo.CurrentCulture, Environment.GetResourceString(&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;ArgumentOutOfRange_MustBePositive&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;), &lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;[] { &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;capacity&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt; }));         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; (length &lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;throw&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; ArgumentOutOfRangeException(&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;length&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;, &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;.Format(CultureInfo.CurrentCulture, Environment.GetResourceString(&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;ArgumentOutOfRange_MustBeNonNegNum&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;), &lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;object&lt;/span&gt;&lt;span style="color: #000000"&gt;[] { &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;length&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt; }));         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; (startIndex &lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;throw&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; ArgumentOutOfRangeException(&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;startIndex&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;, Environment.GetResourceString(&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;ArgumentOutOfRange_StartIndex&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;));         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; (value &lt;/span&gt;&lt;span style="color: #000000"&gt;==&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; value &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;.Empty;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; (startIndex &lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt; (value.Length &lt;/span&gt;&lt;span style="color: #000000"&gt;-&lt;/span&gt;&lt;span style="color: #000000"&gt; length))         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;throw&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;new&lt;/span&gt;&lt;span style="color: #000000"&gt; ArgumentOutOfRangeException(&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;length&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;, Environment.GetResourceString(&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;ArgumentOutOfRange_IndexLength&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;));         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;.m_MaxCapacity &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #800080"&gt;0x7fffffff&lt;/span&gt;&lt;span style="color: #000000"&gt;;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; (capacity &lt;/span&gt;&lt;span style="color: #000000"&gt;==&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; capacity &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #800080"&gt;0x10&lt;/span&gt;&lt;span style="color: #000000"&gt;;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;while&lt;/span&gt;&lt;span style="color: #000000"&gt; (capacity &lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt; length) &lt;span style="color: #ff0000"&gt;&lt;span style="color: #ff0000"&gt;//如果长度大于了容量，则扩容2倍&lt;/span&gt;&lt;/span&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; capacity &lt;/span&gt;&lt;span style="color: #000000"&gt;*=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #800080"&gt;2&lt;/span&gt;&lt;span style="color: #000000"&gt;;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; (capacity &lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; capacity &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; length;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;break&lt;/span&gt;&lt;span style="color: #000000"&gt;;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;.m_StringValue &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;.GetStringForStringBuilder(value, startIndex, length, capacity);         &lt;br /&gt;}          &lt;br /&gt;&lt;/span&gt;&lt;/div&gt;   &lt;/div&gt; &lt;/div&gt;  &lt;p&gt; 还有经常用到的Append方法：&lt;/p&gt;  &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;" onclick="cnblogs_code_show(&amp;#39;c16ea99e-8b1d-41dc-9b32-f99d3bd70021&amp;#39;)"&gt;&lt;img style="display: none" id="code_img_opened_c16ea99e-8b1d-41dc-9b32-f99d3bd70021" class="code_img_opened" onclick="cnblogs_code_hide(&amp;#39;c16ea99e-8b1d-41dc-9b32-f99d3bd70021&amp;#39;,event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" /&gt;     &lt;div id="cnblogs_code_open_c16ea99e-8b1d-41dc-9b32-f99d3bd70021" class="cnblogs_code_hide"&gt;     &lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt; StringBuilder Append(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; value)         &lt;br /&gt;{          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; (value &lt;/span&gt;&lt;span style="color: #000000"&gt;!=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;null&lt;/span&gt;&lt;span style="color: #000000"&gt;)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; stringValue &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;.m_StringValue;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IntPtr currentThread &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; Thread.InternalGetCurrentThread();&lt;span style="color: #ff0000"&gt;//获取线程ID&lt;/span&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;.m_currentThread &lt;/span&gt;&lt;span style="color: #000000"&gt;!=&lt;/span&gt;&lt;span style="color: #000000"&gt; currentThread)         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; stringValue &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;.GetStringForStringBuilder(stringValue, stringValue.Capacity);&lt;span style="color: #ff0000"&gt;//如果是不同线程，则值重新设置&lt;/span&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; length &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; stringValue.Length;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt; requiredLength &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; length &lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt; value.Length;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;if&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;.NeedsAllocation(stringValue, requiredLength))&lt;span style="color: #ff0000"&gt;//看是否需要扩容&lt;/span&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; newString &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;.GetNewString(stringValue, requiredLength);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; newString.AppendInPlace(value, length);&lt;span style="color: #ff0000"&gt;//追加新值&lt;/span&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;.ReplaceString(currentThread, newString);&lt;span style="color: #ff0000"&gt;//把线程ID的字符串值更新&lt;/span&gt;          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;span style="color: #000000"&gt;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; stringValue.AppendInPlace(value, length);          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;.ReplaceString(currentThread, stringValue);         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;return&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;this&lt;/span&gt;&lt;span style="color: #000000"&gt;;         &lt;br /&gt;}          &lt;br /&gt;&lt;/span&gt;&lt;/div&gt;   &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;StringBuilder在需要多次修改字符串值的时候是个比较好的工具，他的性能比直接修改string要快很多，下面将通过IL代码来看看，实际运用中如果多次修改string产生的代价：&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;" onclick="cnblogs_code_show(&amp;#39;5f1878b5-9a8c-4c69-b90f-8e5c52417375&amp;#39;)"&gt;&lt;img style="display: none" id="code_img_opened_5f1878b5-9a8c-4c69-b90f-8e5c52417375" class="code_img_opened" onclick="cnblogs_code_hide(&amp;#39;5f1878b5-9a8c-4c69-b90f-8e5c52417375&amp;#39;,event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" /&gt;     &lt;div id="cnblogs_code_open_5f1878b5-9a8c-4c69-b90f-8e5c52417375" class="cnblogs_code_hide"&gt;     &lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt;&lt;span style="color: #000000"&gt; abc         &lt;br /&gt;{          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt; a         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt; Main()         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; s &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;1 &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;2 &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;3 &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Console.WriteLine(s);          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }          &lt;br /&gt;}          &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;IL如下&lt;/span&gt;&lt;span style="color: #008000"&gt;         &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;.method&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160; hidebysig&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Main()&amp;#160;&amp;#160; cil&amp;#160;&amp;#160; managed&amp;#160; &lt;br /&gt;{&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; .entrypoint&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;#160;&amp;#160; Code&amp;#160;&amp;#160; size&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 13&amp;#160;&amp;#160; (0xd) &lt;/span&gt;&lt;span style="color: #008000"&gt;         &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160;&amp;#160; .maxstack&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; .locals&amp;#160;&amp;#160; init&amp;#160;&amp;#160; (&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160; V_0)&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0000:&amp;#160;&amp;#160;&amp;#160;&amp;#160; ldstr&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;123 &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0005:&amp;#160;&amp;#160;&amp;#160;&amp;#160; stloc.&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0006:&amp;#160;&amp;#160;&amp;#160;&amp;#160; ldloc.&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0007:&amp;#160;&amp;#160;&amp;#160;&amp;#160; call&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160; [mscorlib]System.Console::WriteLine(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;)&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_000c:&amp;#160;&amp;#160;&amp;#160;&amp;#160; ret&amp;#160; &lt;br /&gt;}&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;#160;&amp;#160; end&amp;#160;&amp;#160; of&amp;#160;&amp;#160; method&amp;#160;&amp;#160; a::Main &lt;/span&gt;&lt;/div&gt;   &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;在这里我们看到这么一句：&amp;#160;&amp;#160; ldstr&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;quot;123 &amp;quot;，String&amp;#160;&amp;#160; 是引用类型，可它却没有newobj指令，这说明CLR构造String与其他的对象不一样。还有，不用我说你们都看到了：为什么是&amp;#8220;123&amp;#8221;，原因是编译器在编译时将它们合并成一个字符串放到了程序集的元数据中（仅限于文字字符）。这样，运行时CLR直接将它们取出来用就OK了，不用再&amp;#8220;分别取出来，重新分配内存，复制数据&amp;#8220;。&lt;/p&gt;  &lt;p&gt;&lt;span style="widows: 2; text-transform: none; text-indent: 0px; border-collapse: separate; font: medium simsun; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class="Apple-style-span"&gt;&lt;span style="text-align: left; line-height: 23px; font-family: simsun; font-size: 14px" class="Apple-style-span"&gt;关于下面这个问题，结果却是不一样的：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;" onclick="cnblogs_code_show(&amp;#39;f59c771e-55c8-4dd4-8959-29401d0727a5&amp;#39;)"&gt;&lt;img style="display: none" id="code_img_opened_f59c771e-55c8-4dd4-8959-29401d0727a5" class="code_img_opened" onclick="cnblogs_code_hide(&amp;#39;f59c771e-55c8-4dd4-8959-29401d0727a5&amp;#39;,event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" /&gt;     &lt;div id="cnblogs_code_open_f59c771e-55c8-4dd4-8959-29401d0727a5" class="cnblogs_code_hide"&gt;     &lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #0000ff"&gt;namespace&lt;/span&gt;&lt;span style="color: #000000"&gt; abc         &lt;br /&gt;{          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;class&lt;/span&gt;&lt;span style="color: #000000"&gt; a         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt; Main()         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; s1 &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;1 &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; s2 &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;2 &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; s3 &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;3 &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt; s &lt;/span&gt;&lt;span style="color: #000000"&gt;=&lt;/span&gt;&lt;span style="color: #000000"&gt; s1 &lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt; s2 &lt;/span&gt;&lt;span style="color: #000000"&gt;+&lt;/span&gt;&lt;span style="color: #000000"&gt; s3;         &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Console.WriteLine(s);          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }          &lt;br /&gt;}&amp;#160; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;IL如下&lt;/span&gt;&lt;span style="color: #008000"&gt;         &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;.method&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160; hidebysig&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Main()&amp;#160;&amp;#160; cil&amp;#160;&amp;#160; managed&amp;#160; &lt;br /&gt;{&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; .entrypoint&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;#160;&amp;#160; Code&amp;#160;&amp;#160; size&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 34&amp;#160;&amp;#160; (0x22) &lt;/span&gt;&lt;span style="color: #008000"&gt;         &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160;&amp;#160; .maxstack&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #800080"&gt;3&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; .locals&amp;#160;&amp;#160; init&amp;#160;&amp;#160; (&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160; V_0,&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160; V_1,&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160; V_2,&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160; V_3)&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0000:&amp;#160;&amp;#160;&amp;#160;&amp;#160; ldstr&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;1 &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0005:&amp;#160;&amp;#160;&amp;#160;&amp;#160; stloc.&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0006:&amp;#160;&amp;#160;&amp;#160;&amp;#160; ldstr&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;2 &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_000b:&amp;#160;&amp;#160;&amp;#160;&amp;#160; stloc.&lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_000c:&amp;#160;&amp;#160;&amp;#160;&amp;#160; ldstr&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;3 &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0011:&amp;#160;&amp;#160;&amp;#160;&amp;#160; stloc.&lt;/span&gt;&lt;span style="color: #800080"&gt;2&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0012:&amp;#160;&amp;#160;&amp;#160;&amp;#160; ldloc.&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0013:&amp;#160;&amp;#160;&amp;#160;&amp;#160; ldloc.&lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0014:&amp;#160;&amp;#160;&amp;#160;&amp;#160; ldloc.&lt;/span&gt;&lt;span style="color: #800080"&gt;2&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0015:&amp;#160;&amp;#160;&amp;#160;&amp;#160; call&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160; [mscorlib]System.String::Concat(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;)&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_001a:&amp;#160;&amp;#160;&amp;#160;&amp;#160; stloc.&lt;/span&gt;&lt;span style="color: #800080"&gt;3&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_001b:&amp;#160;&amp;#160;&amp;#160;&amp;#160; ldloc.&lt;/span&gt;&lt;span style="color: #800080"&gt;3&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_001c:&amp;#160;&amp;#160;&amp;#160;&amp;#160; call&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160; [mscorlib]System.Console::WriteLine(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;)&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0021:&amp;#160;&amp;#160;&amp;#160;&amp;#160; ret&amp;#160; &lt;br /&gt;}&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;#160;&amp;#160; end&amp;#160;&amp;#160; of&amp;#160;&amp;#160; method&amp;#160;&amp;#160; a::Main &lt;/span&gt;&lt;/div&gt;   &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;这里我们关心的是这一句：System.String::Concat(string,&amp;#160;&amp;#160; string,string) 。这一句的源代码上面给出来了，它实现分配一块内存，然后将s1,s2,s3的内容复制过去。    &lt;br /&gt;再请看：&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;" onclick="cnblogs_code_show(&amp;#39;15e8210c-d6c1-4701-acc6-f673e41d5950&amp;#39;)"&gt;&lt;img style="display: none" id="code_img_opened_15e8210c-d6c1-4701-acc6-f673e41d5950" class="code_img_opened" onclick="cnblogs_code_hide(&amp;#39;15e8210c-d6c1-4701-acc6-f673e41d5950&amp;#39;,event)" src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" /&gt;     &lt;div id="cnblogs_code_open_15e8210c-d6c1-4701-acc6-f673e41d5950" class="cnblogs_code_hide"&gt;     &lt;div&gt;&lt;!--&lt;br/ /&gt;&lt;br/ /&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/ /&gt;http://www.CodeHighlighter.com/&lt;br/ /&gt;&lt;br/ /&gt;--&gt;&lt;span style="color: #000000"&gt;.method&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;private&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160; hidebysig&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;static&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Main()&amp;#160;&amp;#160; cil&amp;#160;&amp;#160; managed&amp;#160; &lt;br /&gt;{&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; .entrypoint&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;#160;&amp;#160; Code&amp;#160;&amp;#160; size&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 55&amp;#160;&amp;#160; (0x37) &lt;/span&gt;&lt;span style="color: #008000"&gt;         &lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160;&amp;#160; .maxstack&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #800080"&gt;2&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; .locals&amp;#160;&amp;#160; init&amp;#160;&amp;#160; (&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160; V_0,&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160; V_1,&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160; V_2,&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160; V_3)&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0000:&amp;#160;&amp;#160;&amp;#160;&amp;#160; ldstr&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;1 &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0005:&amp;#160;&amp;#160;&amp;#160;&amp;#160; stloc.&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0006:&amp;#160;&amp;#160;&amp;#160;&amp;#160; ldstr&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;2 &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_000b:&amp;#160;&amp;#160;&amp;#160;&amp;#160; stloc.&lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_000c:&amp;#160;&amp;#160;&amp;#160;&amp;#160; ldstr&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;3 &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0011:&amp;#160;&amp;#160;&amp;#160;&amp;#160; stloc.&lt;/span&gt;&lt;span style="color: #800080"&gt;2&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0012:&amp;#160;&amp;#160;&amp;#160;&amp;#160; ldstr&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;#160;&lt;/span&gt;&lt;span style="color: #800000"&gt;&amp;quot;&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0017:&amp;#160;&amp;#160;&amp;#160;&amp;#160; stloc.&lt;/span&gt;&lt;span style="color: #800080"&gt;3&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0018:&amp;#160;&amp;#160;&amp;#160;&amp;#160; ldloc.&lt;/span&gt;&lt;span style="color: #800080"&gt;3&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0019:&amp;#160;&amp;#160;&amp;#160;&amp;#160; ldloc.&lt;/span&gt;&lt;span style="color: #800080"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_001a:&amp;#160;&amp;#160;&amp;#160;&amp;#160; call&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160; [mscorlib]System.String::Concat(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;)&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_001f:&amp;#160;&amp;#160;&amp;#160;&amp;#160; stloc.&lt;/span&gt;&lt;span style="color: #800080"&gt;3&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0020:&amp;#160;&amp;#160;&amp;#160;&amp;#160; ldloc.&lt;/span&gt;&lt;span style="color: #800080"&gt;3&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0021:&amp;#160;&amp;#160;&amp;#160;&amp;#160; ldloc.&lt;/span&gt;&lt;span style="color: #800080"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0022:&amp;#160;&amp;#160;&amp;#160;&amp;#160; call&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160; [mscorlib]System.String::Concat(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;)&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0027:&amp;#160;&amp;#160;&amp;#160;&amp;#160; stloc.&lt;/span&gt;&lt;span style="color: #800080"&gt;3&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0028:&amp;#160;&amp;#160;&amp;#160;&amp;#160; ldloc.&lt;/span&gt;&lt;span style="color: #800080"&gt;3&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0029:&amp;#160;&amp;#160;&amp;#160;&amp;#160; ldloc.&lt;/span&gt;&lt;span style="color: #800080"&gt;2&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_002a:&amp;#160;&amp;#160;&amp;#160;&amp;#160; call&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160; [mscorlib]System.String::Concat(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;,&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;)&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_002f:&amp;#160;&amp;#160;&amp;#160;&amp;#160; stloc.&lt;/span&gt;&lt;span style="color: #800080"&gt;3&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0030:&amp;#160;&amp;#160;&amp;#160;&amp;#160; ldloc.&lt;/span&gt;&lt;span style="color: #800080"&gt;3&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0031:&amp;#160;&amp;#160;&amp;#160;&amp;#160; call&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #0000ff"&gt;void&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;#160;&amp;#160; [mscorlib]System.Console::WriteLine(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;&lt;span style="color: #000000"&gt;)&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; IL_0036:&amp;#160;&amp;#160;&amp;#160;&amp;#160; ret&amp;#160; &lt;br /&gt;}&amp;#160;&amp;#160; &lt;/span&gt;&lt;span style="color: #008000"&gt;//&lt;/span&gt;&lt;span style="color: #008000"&gt;&amp;#160;&amp;#160; end&amp;#160;&amp;#160; of&amp;#160;&amp;#160; method&amp;#160;&amp;#160; a::Main &lt;/span&gt;&lt;span style="color: #008000"&gt;         &lt;br /&gt;&lt;/span&gt;&lt;/div&gt;   &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font face="宋体"&gt;string&amp;#160;&amp;#160; a=str1+str2+str3+str4只分配一次内存，而后者的代码需要分配三次内存。（来自&lt;a title="CSDN上的讨论" href="http://topic.csdn.net/t/20021217/20/1270787.html"&gt;CSDN上的讨论&lt;/a&gt;）&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="宋体"&gt;&lt;/font&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0080c0" size="3"&gt;&lt;strong&gt;&lt;font face="宋体"&gt;下面是对String的一些网上的分析：&lt;/font&gt;&lt;a href="http://www.cnblogs.com/U2USoft/archive/2006/08/27/487390.html" target="_blank"&gt;&lt;font size="2" face="宋体"&gt;摘自.NET框架未公开的特性[String]&lt;/font&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="宋体"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;背景知识：     &lt;br /&gt;&lt;/b&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; String 是.NET的一种基元类型。CLR和JIT为一些特殊的类作了特殊的处理和优化，String就是其中的一种。其他的包括：其他基元类型， StringBuilder，Array，Type，Enum，Delegate和一些Reflection类，比如MethodInfo。    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 在.NET 1.0中，所有分配到堆的对象都包含了两个东东：一个对象头（4字节）和一个指向方法表的指针（4字节）。对象头提供有5个位标志，其中一个位标志是为 GC保留的，它标识对象是否是&amp;#8220;可到达对象&amp;#8220;（&amp;#8220;可到达对象&amp;#8220;是垃圾回收算法里的一个名词，简单的说就是指正在被应用程序使用的对象）。剩余的27个位作 为一个索引，被称作syncindex，它指向一个表。这个索引有多种用途：首先，在使用&amp;quot;lock&amp;quot; 关键字时，它用于线程同步；另外，在调用Object.GetHashCode()方法时，它被用作缺省的哈希代码（继承类没有重写 Object.GetHashCode()时）。尽管这个索引不能为哈希代码提供最好的分布特性，但是，对于哈希代码的另外一个要求---具有相同值的对 象返回相同的哈希代码，它是可以满足的。在对象的整个生存周期，syncindex保持不变。    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 所有的对象都可以根据对象头计算得到它实际的内存占用，计算的公式如下（摘自Rotor包sscli20020326\sscli\clr\src\vm\object.h）：    &lt;br /&gt;&lt;font color="#ff0000" size="2"&gt;MT-&amp;gt;GetBaseSize() + ((OBJECTTYPEREF-&amp;gt;GetSizeField() * MT-&amp;gt;GetComponentSize())     &lt;br /&gt;&lt;/font&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 对于大多数对象，它们的大小是固定不变的。String类和Array类（包括Array的继承类）是仅有的两个可变长对象，也就是说它们创建后，对象的长度可以发生变化。    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; String有点类似OLE BSTRs---以长度数据开头，空字符结尾的Unicode字符数组。下面列出的是String在内部维护的三个字段：    &lt;br /&gt;&lt;b&gt;&lt;font color="#ff0000" size="2"&gt;[NonSerialized]private int&amp;#160; m_arrayLength;       &lt;br /&gt;[NonSerialized]private int&amp;#160; m_stringLength;        &lt;br /&gt;[NonSerialized]private char m_firstChar;&lt;/font&gt;&lt;/b&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 它们的具体含义如下表所示：&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;&lt;b&gt;m_arrayLength&lt;/b&gt;      &lt;br /&gt;&lt;/font&gt;这是分配给字符串的实际长度（以字符为单位）。通常创建一个字符串时，m_arrayLength与字符串的逻辑长度(m_stringLength)是相同的。但是，如果使用StringBuilder返回一个字符串，实际长度可能比逻辑长度大。&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;font color="#ff0000"&gt;m_stringLength&lt;/font&gt;&lt;/b&gt;    &lt;br /&gt;这是字符串的逻辑长度，你可以通过String.Length属性获得。出于优化性能的需要，m_stringLength的一些高位被用作标识 符，所以String的最大长度要比UInt32.Max小得多（32位操作系统）。这些标识符的其中一些用来指示String是否是简单字符（比如 plain ASCII），这样在排序和比较的时候，就不采用复杂的UNICODE算法。&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;font color="#ff0000"&gt;m_firstChar&lt;/font&gt;&lt;/b&gt;    &lt;br /&gt;这是字符串的第一个字符。如果是空字符串的话，这是空字符。&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; String总是以一个空字符结尾，这一点加强了它与非托管代码和传统的Win32API的互操作性。   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; String总共占用的内存为：16字节+2字节*字符数+2字节（最后的空字符）。表1中已经讲述，如果使用StringBuilder来创建字符串，那么实际分配的内存将可能比String.Length大。    &lt;br /&gt;&lt;b&gt;非常有效率的StringBuilder&lt;/b&gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 与String密切关联的是StringBuilder。虽然StringBuilder被放在System.Text命名空间，但它不是一个平常的类。 运行时和JIT编译器对StringBuilder进行了特殊的处理，你想写一个跟它一样有效率的类是不容易的。    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; StringBuilder在内部维护一个字符串变量---m_StringValue，并且允许直接对它进行修改。默认情况下，m_StringValue的m_arrayLength字段为16。下面是StringBuilder维护的2个内部字段：    &lt;br /&gt;&lt;b&gt;&lt;font color="#ff0000"&gt;internal int m_MaxCapacity = 0;       &lt;br /&gt;internal String m_StringValue = null;&lt;/font&gt;      &lt;br /&gt;&lt;/b&gt;它们的具体含义如下所示： &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;font color="#ff0000"&gt;m_MaxCapacity&lt;/font&gt;&lt;/b&gt;    &lt;br /&gt;StringBuilder的最大容量，它规定了最多可以放置到m_StringValue的字符个数，默认值为Int32.MaxValue。你可以自己规定一个小一点的容量，m_MaxCapacity一旦被指定就不能再更改。&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;font color="#ff0000"&gt;m_StringValue&lt;/font&gt;&lt;/b&gt;    &lt;br /&gt;StringBuilder维护的一个字符串（Jeffrey Richter在《Applied Microsoft .NET Framework Programming》中讲述StringBuilder维护的是一个字符数组，译者认为作为字符数组比较容易理解，但从Rotor包的源代码看，实际 维护的应该是一个字符串&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;使用StringBuilder.ToString()返回一个字符串时，实际的字符串被返回（也就是说该方法返回的是StringBuilder内部维 护的字符串字段 （m_StringValue）的引用，而不是创建新字符串）。如果StringBuilder的容量（ArrayLength）超过实际字符数的两倍以 上，StringBuilder.ToString()将返回一个字符串的简洁版本。在调用了StringBuilder. ToString()方法之后，再次修改StringBuilder将会产生一个复制动作，它将创建一个新的字符串；这时被修改的是新的字符串，如此，原 来已经返回的字符串才不会发生改变。   &lt;br /&gt;除了字符串使用的内存外，StringBuilder额外开销了16个字节，但是，同样的StringBuilder对象可以被使用多次来生成多个字符串，这样StringBuilder仅仅带来一次额外开销。    &lt;br /&gt;我们可以看到，使用StringBuilder是非常有效率的。&lt;/p&gt;  &lt;img src="http://www.cnblogs.com/cdts_change/aggbug/1824513.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/cdts_change/archive/2010/09/12/1824513.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/cdts_change/archive/2010/03/16/1686869.html</id><title type="text">向XML插入节点</title><summary type="text">假如现在有一个Xml文件，内容如下：Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--&gt;&lt;ReportItems&gt;&lt;LineName="line2"&gt;&lt;Top&gt;3.75cm&lt;/Top&gt;&lt;Width&gt;0.2381cm&lt;/Width&gt;&lt;Style&gt;&lt;BorderStyle&gt;&lt;Default&gt;Solid&lt;/Default</summary><published>2010-03-16T02:03:00Z</published><updated>2010-03-16T02:03:00Z</updated><author><name>山天大畜</name><uri>http://www.cnblogs.com/cdts_change/</uri></author><link rel="alternate" href="http://www.cnblogs.com/cdts_change/archive/2010/03/16/1686869.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/cdts_change/archive/2010/03/16/1686869.html"/><content type="text">假如现在有一个Xml文件，内容如下：Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--&gt;&lt;ReportItems&gt;&lt;LineName="line2"&gt;&lt;Top&gt;3.75cm&lt;/Top&gt;&lt;Width&gt;0.2381cm&lt;/Width&gt;&lt;Style&gt;&lt;BorderStyle&gt;&lt;Default&gt;Solid&lt;/Default</content></entry></feed>
