<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_C#初学课堂(寒飞雨)</title><subtitle type="text">Beginner, I know what you need!</subtitle><id>http://feed.cnblogs.com/blog/u/50715/rss</id><updated>2012-01-12T10:01:23Z</updated><author><name>寒飞雨</name><uri>http://www.cnblogs.com/BeginnerClassroom/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BeginnerClassroom/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/50715/rss"/><entry><id>http://www.cnblogs.com/BeginnerClassroom/archive/2012/01/12/2320905.html</id><title type="text">【征名属性】第一版写了五年，虽然口碑很好，但销量差强人意，第二版征求个好名字。</title><summary type="text">第一版花了我五年时间，看过的人都说书挺好，非常通俗易懂，有些人说看了四五本书都看不懂的概念看了我这本书后看懂了。但最终销量不怎么样。分析原因，出版社给了两个：1、定位太高。既然针对初学者，就得做得像家常菜一样，大众化。比如《叩响C#之门》这个书名太文绉绉了，不够吸引人。2、宣传不够。转眼三年过去了，第二版已经写成。一般第二版销量不好的书出版社不愿意出第二版的，但又觉得这本书质量难得，放弃可惜。所以现在征求个好名字，既通俗易懂，又能吸引人，不和市场上已有的书重名。现在想好的有三个1、C#初学经典2、C#轻松入门3、C#的初恋（朋友起的，很搞笑）谢谢。内容简介：本书写给完全没有编程经验的初学者。它</summary><published>2012-01-12T09:57:00Z</published><updated>2012-01-12T09:57:00Z</updated><author><name>寒飞雨</name><uri>http://www.cnblogs.com/BeginnerClassroom/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BeginnerClassroom/archive/2012/01/12/2320905.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BeginnerClassroom/archive/2012/01/12/2320905.html"/><content type="html">&lt;p&gt;第一版花了我五年时间，看过的人都说书挺好，非常通俗易懂，有些人说看了四五本书都看不懂的概念看了我这本书后看懂了。但最终销量不怎么样。&lt;/p&gt;&#xD;
&lt;p&gt;分析原因，出版社给了两个：&lt;br /&gt;1、定位太高。既然针对初学者，就得做得像家常菜一样，大众化。比如《叩响C#之门》这个书名太文绉绉了，不够吸引人。&lt;/p&gt;&#xD;
&lt;p&gt;2、宣传不够。&lt;/p&gt;&#xD;
&lt;p&gt;转眼三年过去了，第二版已经写成。一般第二版销量不好的书出版社不愿意出第二版的，但又觉得这本书质量难得，放弃可惜。&lt;/p&gt;&#xD;
&lt;p&gt;所以现在征求个好名字，既通俗易懂，又能吸引人，不和市场上已有的书重名。&lt;/p&gt;&#xD;
&lt;p&gt;现在想好的有三个&lt;br /&gt;1、C#初学经典&lt;br /&gt;2、C#轻松入门&lt;br /&gt;3、C#的初恋（朋友起的，很搞笑）&lt;/p&gt;&#xD;
&lt;p&gt;谢谢。&lt;/p&gt;&#xD;
&lt;p&gt;内容简介：&lt;br /&gt;本书写给完全没有编程经验的初学者。它从最基本的C#语法开始，采用逐步构建的学习方法，一步一步地深入到C#编程的核心概念。当C#语法基础打扎实后，即进入窗体编程的学习，这样读者就有了比较丰富的编程体验，此时进入委托、线程、程序集等深层次概念的学习，便水到渠成、轻松易懂。本书针对初学者，因为写此书之前作者也是一个初学者，与初学者思维相近，心灵相通，知道初学者的困惑之处，相信学完此书之后，你不光能牢固地掌握C#的基础语法，更能深刻地体会到C#的核心思想。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;前言&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这是一部花费将近五年时间写成的著作，千锤百炼写就、心血凝结而成。&lt;br /&gt;这是一部面向初学者的著作，因为写此书之前我也是一个初学者。正因为如此我懂得初学者在想什么，懂得初学者需要什么与初学者思维相近，心灵相通，故能针对初学者的困惑之处着笔。看完这本书你并不能马上成为绝顶高手，但能帮你快速地掌握编程的基本概念和基本思想，为深入学习打下扎实的基础。我希望你看完这本书后，再也不用为不知如何踏入编程的殿堂而彷徨，再也不用为书籍中繁多的名词术语而迷茫，能够轻松地阅读别人的代码，踏上高手之路。&lt;br /&gt;之所以说是心血凝结而成，是因为这部著作不但耗费了巨大的时间和精力，而且融入了我多年的学习体会和教学思想。&lt;br /&gt;本书的特点&lt;br /&gt;1．知初学者之需 我是一名高中数学教师，在教学过程中我发现，让学生替我讲题往往会收到很好的效果。究其原因，并非学生讲得多么精彩，而是学生间的思维层次相同，该学生重点讲解之处就是其他学生困惑之处。因此，我在编写本书时，尽力回想自己学习时的体验，以己推人，了解初学者的困惑。幸好，我在学习C#之初做了大量的笔记，写下了不少困惑和感受，这对我编写本书大有裨益。&lt;br /&gt;2．逐步构建知识 学习知识有两种基本方法，一种方法是先对整体概述，然后逐步细化。如果学习者对所学领域有一定认识，生活中有一定的体验，就适合这种方法。另一种方法是由最简单的知识出发，逐步添加内容，最后构建成一个整体。如果学习者对所学领域非常陌生，就适合这种方法。编程，现实生活中没有体验，对初学者来说是非常陌生和抽象的事物，所以本书并没有像其他教材那样开篇即对.NET框架展开大篇幅论述（成堆的陌生概念会让人望而生畏，我刚接触C#时就是这种感觉），而是简单介绍后就采用逐步构建的方法来学习。对于每个知识点，先指导学习者编写一些简单小程序，获得感性体验，然后透过现象看本质，讲解其背后蕴涵的道理。随着内容的不断添加，最终构建成完整的知识体系。&lt;br /&gt;3．例子典型简单 要想知道苹果的味道，只需要尝一口即可，要想学好编程，就要不断练习。所以本书通过大量贴切的例子来讲解概念。这些例子精心构思，巧妙设计，为了一个例子，我常常琢磨数月，以确保它典型、简单，一目了然。&lt;br /&gt;4．结构编排合理 C#语言体系庞大，知识繁杂，概念互相交叉。为此，我在结构编排上花费了很多心思，理清了概念间的顺序，让这些概念按逻辑顺序逐一展现。并且编排中也考虑了读者的兴趣，内容难易交错，跌宕起伏，读者一路学习下来，会很有成就感。&lt;br /&gt;5．语言简洁通顺 啰里啰唆的行文会妨碍读者理解，因此每段话都我都追求逻辑连贯，含义准确，千锤百炼，字字珠玑，绝无半句废话妨碍读者思维。为了达到这个目的，一些重要段落常常修改数周方才定稿，一些难讲的概念常常花费数月进行构思。我认为花这么多时间是值得的，因为我一个人多花点时间，就可以使成千上万的读者节省很多时间。&lt;br /&gt;为什么写一本书我要花费如此多的心血？这可能和我是追求完美主义的偏执性格有关，看到不完善的地方就不安心，就有一种非改不可的冲动。时至今日每读一遍本书，我都会修改很多词句，觉得还不够十全十美。今天偶然读到一句话：&amp;ldquo;追求完美是浪费生命，追求卓越才是追求成功。&amp;rdquo;掩卷回思，感悟颇深，感叹道：此书虽非完美无瑕，应该也可以称得上卓越了。于是决定先出版这本书，奉献给读者，这样总比放在我的电脑里强百倍，你说是不是？&lt;br /&gt;&amp;ldquo;文王拘而演周易，仲尼厄而作春秋&amp;rdquo;，批阅五载，增删十次，借物明志。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/BeginnerClassroom/aggbug/2320905.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2012/01/12/2320905.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/BeginnerClassroom/archive/2010/11/01/1866179.html</id><title type="text">《叩响C#之门》一审修改完毕，感谢参与的园友 现在邀请园友进行第二次审查</title><summary type="text">三个月前，我发了一篇帖子：《叩响C#之门》第二版修改完毕，邀请200位园友审查，不通过，不出版。结果令我非常感动，有近百位园友参与了审查，提出了宝贵意见，另有10位园友提供了精彩发附录，在此表示万分感谢。  经过三个月的努力，现已修改完毕，为了避免错误，再次邀请园友做最后一遍检查，争取改掉所有问题。  和上次一样，请感兴趣的园友选取若干章，我通过电子邮件发给您。与上次不同的是，这次我想请几位高水平...</summary><published>2010-11-01T05:52:00Z</published><updated>2010-11-01T05:52:00Z</updated><author><name>寒飞雨</name><uri>http://www.cnblogs.com/BeginnerClassroom/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/11/01/1866179.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/11/01/1866179.html"/><content type="html">&lt;p&gt;&lt;font size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;strong&gt;三个月前，我发了一篇帖子：&lt;/strong&gt;&lt;/font&gt;&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/07/30/1788649.html"&gt;&lt;strong&gt;&lt;font size="2"&gt;《叩响C#之门》第二版修改完毕，邀请200位园友审查，不通过，不出版。&lt;/font&gt;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;&lt;font size="2"&gt;结果令我非常感动，有近百位园友参与了审查，提出了宝贵意见，另有10位园友提供了精彩发附录，在此表示万分感谢。&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 经过三个月的努力，现已修改完毕，为了避免错误，再次邀请园友做最后一遍检查，争取改掉所有问题。&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 和上次一样，请感兴趣的园友选取若干章，我通过电子邮件发给您。与上次不同的是，这次我想请几位高水平且非常细心的园友参与，因为人太多了我实在忙不过来（现在不是假期），而且的重点主要放在检查错别字和知识点错误上，内容上大的修改恐怕只能放等下一版了。&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果您没有时间，也可以请您认识的大牛来帮忙，万分感谢。&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt; &lt;p&gt;&lt;font color="#555555" size="3"&gt;&lt;/font&gt;&lt;font color="#ff0000" size="4"&gt;&lt;strong&gt;审查截止，谢谢！&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;table style="color: #555555" border="2" cellspacing="0" cellpadding="2" width="679"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="259"&gt;&lt;font size="2"&gt;目录&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="416"&gt;&lt;font size="2"&gt;审查园友&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="260"&gt;&lt;font size="2"&gt;第1章 初识编程&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="415"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="261"&gt;&lt;font size="2"&gt;第2章 变量&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="415"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="261"&gt;&lt;font size="2"&gt;第3章 运算符和表达式&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="415"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="261"&gt;&lt;font size="2"&gt;第4章 流程控制&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="415"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="261"&gt;&lt;font size="2"&gt;第5章 枚举、结构体和数组&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="415"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="261"&gt;&lt;font size="2"&gt;第6章 函数&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="415"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="261"&gt;&lt;font size="2"&gt;第7章 面向对象编程：类和对象（一）&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="415"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="261"&gt;&lt;font size="2"&gt;第8章 面向对象编程：类和对象（二）&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="415"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="261"&gt;&lt;font size="2"&gt;第9章 面向对象编程：继承&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="415"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="261"&gt;&lt;font size="2"&gt;第10章 面向对象编程：多态性&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="415"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="261"&gt;&lt;font size="2"&gt;第11章 .NET框架基本概念&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="415"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="261"&gt;&lt;font size="2"&gt;第12章 异常&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="415"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="261"&gt;&lt;font size="2"&gt;第13章 Windows窗体编程（一）&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="415"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="261"&gt;&lt;font size="2"&gt;第14章 Windows窗体编程（二）&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="415"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="261"&gt;&lt;font size="2"&gt;第15章 Windows窗体编程（三）&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="415"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="261"&gt;&lt;font size="2"&gt;第16章 委托与事件&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="415"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="261"&gt;&lt;font size="2"&gt;第17章 绘图&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="415"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="261"&gt;&lt;font size="2"&gt;第18章 文件和流&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="415"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="261"&gt;&lt;font size="2"&gt;第19章 字符串&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="415"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="261"&gt;&lt;font size="2"&gt;第20章 正则表达式&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="415"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="261"&gt;&lt;font size="2"&gt;第21章 特性、程序集和反射&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="415"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="261"&gt;&lt;font size="2"&gt;第22章 多线程&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="415"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="261"&gt;&lt;font size="2"&gt;第23章 集合与泛型&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="415"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;&lt;/font&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 最后，我想厚着脸皮说一句：这本书初稿写了差不多5年时间，第二版也修改了一年多，花了我很多心血，如果您看了以后觉得满意，请帮我多宣传一下，谢谢。&lt;/font&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/BeginnerClassroom/aggbug/1866179.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/11/01/1866179.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/BeginnerClassroom/archive/2010/10/18/1854257.html</id><title type="text">《叩响C#之门》园友提供的附录（征集中） 抽象类与接口的区别及应用（相当精彩）</title><summary type="text">审查征集贴：http://www.cnblogs.com/BeginnerClassroom/archive/2010/07/30/1788649.html 附录征集贴：http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1792175.html 欢迎各位园友对本书的某一部分内容进行拓展，将以附录的形式附在书后。 要求：  紧紧围...</summary><published>2010-10-18T04:46:00Z</published><updated>2010-10-18T04:46:00Z</updated><author><name>寒飞雨</name><uri>http://www.cnblogs.com/BeginnerClassroom/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/10/18/1854257.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/10/18/1854257.html"/><content type="html">&lt;p align="left"&gt;审查征集贴：&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/07/30/1788649.html"&gt;http://www.cnblogs.com/BeginnerClassroom/archive/2010/07/30/1788649.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;附录征集贴：&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1792175.html"&gt;http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1792175.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;欢迎各位园友对本书的某一部分内容进行拓展，将以附录的形式附在书后。&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;要求：&lt;/p&gt; &lt;ol&gt; &lt;li&gt;紧紧围绕一两个中心展开；  &lt;li&gt;逻辑清晰，行文流畅；  &lt;li&gt;考虑到初学者的基础。  &lt;li&gt;写作时间最好不要少于一星期。&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;我写东西都是写好以后先放在那里，过段时间再读，重新修改，如此反复几次，就基本上很流畅了。&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;（PS：会署名，但无稿费，因为本来就没多少，不够分的。当然如果发了大财，我会分给大家的。）&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="649"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="407"&gt;标题&lt;/td&gt; &lt;td valign="top" width="147"&gt;作者&lt;/td&gt; &lt;td valign="top" width="93"&gt;状态&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="403"&gt;&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1791922.html"&gt;关于RichTextBox修改字体大小的研究&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="150"&gt;李雨来&lt;/td&gt; &lt;td valign="top" width="94"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="401"&gt;委托和接口的策略延迟思想&lt;/td&gt; &lt;td valign="top" width="152"&gt;汤非凡&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="399"&gt;XML格式注释&lt;/td&gt; &lt;td valign="top" width="154"&gt;张智鸣&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="397"&gt;抽象类与接口的区别及应用&lt;/td&gt; &lt;td valign="top" width="155"&gt;&lt;a href="http://home.cnblogs.com/leoo2sk/"&gt;张洋&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="397"&gt;.NET版本变更史&lt;/td&gt; &lt;td valign="top" width="156"&gt;张智鸣&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="396"&gt;字符编码&lt;/td&gt; &lt;td valign="top" width="157"&gt;赵士敬&lt;/td&gt; &lt;td valign="top" width="95"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;流的应用实例&lt;/td&gt; &lt;td valign="top" width="158"&gt;黄志斌&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;通过在线评测平台磨砺C#能力&lt;/td&gt; &lt;td valign="top" width="158"&gt;曹如进&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;正则表达式在EmEditor里的应用&lt;/td&gt; &lt;td valign="top" width="158"&gt;柳永法&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt; &lt;p&gt;C#程序编码规范&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="159"&gt;顾磊&lt;font color="#ff0000"&gt;&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="96"&gt;已完稿&lt;strong&gt;&lt;font color="#ff0000"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;&lt;font color="#ff0000"&gt;异步读写操作&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="159"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="96"&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;待选&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;控件开发、自定义控件&lt;/td&gt; &lt;td valign="top" width="159"&gt;&lt;a href="http://home.cnblogs.com/146300/"&gt;MingHao_Hu&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="96"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;&lt;font color="#ff0000"&gt;结构和类的联系与区别&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="159"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="96"&gt;&lt;font color="#ff0000"&gt;待选&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;绘图缓存&lt;/td&gt; &lt;td valign="top" width="159"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="96"&gt;&lt;strong&gt;待选&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;正则表达式应用实例&lt;/td&gt; &lt;td valign="top" width="159"&gt;&lt;a href="http://www.cnblogs.com/skyiv/"&gt;空军&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="96"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;（欢迎您提供其他附录）&lt;/td&gt; &lt;td valign="top" width="159"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="96"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;h1 align="center"&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt; &lt;h3 align="center"&gt;抽象类与接口的区别及应用&lt;/strong&gt;&lt;/p&gt; &lt;p align="center"&gt;(本文由张洋提供)  &lt;p&gt;抽象类（Abstract Class）与接口（Interface）是面向对象程序设计中两个重要的概念。由于两者在自身特性及应用方法上存在诸多相似性，如都不能实例化、都可以被继承（严格来说对于接口应该叫做实现），这么一来，在许多人心中抽象类与接口的界限非常模糊，对何时该使用抽象类、何时该使用接口更是感到困惑。  &lt;p&gt;本文的目的是通过对两者的讨论与比较，帮助读者认清抽象类与接口在思想本质及应用场合方面的区别，如能做到这一点，读者便可以得心应手地根据具体情况正确选择和使用抽象类与接口。  &lt;p&gt;&lt;strong&gt;1. 抽象类与接口是面向对象思想层面概念，不是程序设计语言层面概念&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;如若想正确认识抽象类与接口，首先要弄清楚的一点是，这两个概念均属于面向对象思想层面，而不属于某种程序设计语言。例如，C#中用interface关键字声明的语言元素，我们叫它“接口”，其实这是不准确的，准确来说，这应该叫做“接口在C#语言中的实现机制”。  &lt;p&gt;面向对象思想包含许多概念，而不同面向对象语言对这些概念的具体实现机制各有不同。例如，C++中并没有一种关键字对应于C#中的interface，那么C++中就没有接口的概念了吗？非也！在C++中，如果想定义一个接口，可以通过将一个类中所有方法定义为纯虚方法&lt;a href="#_ftn1_3152" name="_ftnref1_3152"&gt;[①]&lt;/a&gt;来做到。  &lt;p&gt;这里可以看到，同样是接口，C#中用interface关键字来定义，而C++通过创建一个只包含纯虚方法的类来定义，这就是同一种概念在不同具体语言中具有不同的实现机制。类似的，C++中也没有abstract关键字用于定义抽象类，而是如果一个类中至少含有一个纯虚方法且它的方法不全为纯虚方法，则这个类被称为抽象类。  &lt;p&gt;通过上面的分析可以看出，如果仅仅停留在语言层面去认知抽象类与接口，是无法准确理解两者的真谛的，因为不同语言对同一概念的实现机制有很大差别。如果一个C#初学者简单将两者理解为“用abstract修饰的类是抽象类，用interface定义的语言元素是接口”，那么当他接触C++时一定会感到困惑，因为C++里既没有abstract也没有interface，而是通过类中纯虚方法的情况确定这是个类、是个抽象类还是个接口。  &lt;p&gt;明确了上面的问题，我们就可以给出抽象类与接口的真正定义了。  &lt;p&gt;&lt;b&gt;抽象类是不能实例化的类，&lt;/b&gt;但是其中的方法可以包含具体实现代码。  &lt;p&gt;&lt;b&gt;接口是一组方法声明的集合，&lt;/b&gt;其中应仅包含方法的声明，不能有任何实现代码。  &lt;p&gt;以上对抽象类和接口的定义与任何具体语言无关，而是从面向对象思想角度进行的定义，不同语言可以有不同的实现机制。  &lt;p&gt;从上面的定义中，我们可以发现两者在思想层面上的一项重大区别：&lt;b&gt;抽象类是类（&lt;/b&gt;&lt;b&gt;Class&lt;/b&gt;&lt;b&gt;），接口是集合（&lt;/b&gt;&lt;b&gt;Set&lt;/b&gt;&lt;b&gt;）&lt;/b&gt;，两者从本质上不是一种东西。这是我们总结出的第一个区别。请读者受累将上面加粗的字能放声朗十遍，声音越大越好，但是如果被室友或邻居扔鸡蛋请不要找我。  &lt;p&gt;&lt;strong&gt;2. 抽象类是本体的抽象，接口是行为的抽象&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;在开始这一节之前，我想先请问各位一个问题，“我是一个人”和“我能呼吸”分别表达了“我”和“人”以及“我”和“呼吸”的关系，那么这两句话表达的是一种关系吗？如果你能很容易区分前者表示“是一个”的关系，而后者表示“能”的关系，那么恭喜你，你一定也能很容易区分抽象类和接口。  &lt;p&gt;在阅读这一节时，请读者务必谨记上面这个问题以及下面这句话：  &lt;p&gt;&lt;b&gt;抽象类表示&lt;/b&gt;&lt;b&gt;“&lt;/b&gt;&lt;b&gt;是一个（&lt;/b&gt;&lt;b&gt;IS-A&lt;/b&gt;&lt;b&gt;）&lt;/b&gt;&lt;b&gt;”&lt;/b&gt;&lt;b&gt;关系的抽象，接口表示&lt;/b&gt;&lt;b&gt;“&lt;/b&gt;&lt;b&gt;能（&lt;/b&gt;&lt;b&gt;CAN-DO&lt;/b&gt;&lt;b&gt;）&lt;/b&gt;&lt;b&gt;”&lt;/b&gt;&lt;b&gt;关系的抽象。&lt;/b&gt;&lt;b&gt;&lt;/b&gt;  &lt;p&gt;请照例将上面的大声话朗读十遍。  &lt;p&gt;好的，请各位擦干净头上的鸡蛋，我们继续。  &lt;p&gt;从上面粗体字中我们可以看出，抽象类和接口有一个共性——它们都是“某种关系的抽象”，只不过类型不同罢了。其实如果将上面那句话的前半句中的“抽象类”改为“类”也是正确的，这并不奇怪，上文我们说过，抽象类只不过是一种特殊的类罢了。  &lt;p&gt;下面我们先来解释IS-A关系。其实英语中的IS-A关系在汉语中可以解释为两种情况，当IS-A用在一个对象和一个类之间时，意思是“这个对象是类的一个实例”，例如关羽是一个对象，我们可以说“GuanYu IS-A General”，其中General（将军）是个类，这表示关羽是将军类的一个实例。而当IS-A用在两个类之间时，我认为叫做IS-A-KIND-OF更为准确，表示汉语中的“是一种”，如“General IS-A Person”，表示将军这个类是人这个类的一种，换用面向对象术语可以如下表述：General是Person的子类（Sub Type），Person是General的父类或超类（Super Type），General继承自Person。  &lt;p&gt;这后一种IS-A关系，就是抽象类所表达的关系。分析到这里可以看出，抽象类所表达的关系其实就是面向对象三大特性之一——继承（Inheritance），也就是说，抽象类所表达的关系，与一般类与类之间的继承并无区别，而抽象类相比普通类，除了不能实例化外，也并无区别。之所以出现抽象类，是因为在较高抽象层次上，某些方法（往往是纯虚方法）无法实现，必须由其子类按照各自不同的情况具体实现。因为它含有纯虚方法，所以将这种类实例化在道理上讲不通，但我们又希望将这些子类中共有的部分抽象出来减少代码重复，于是就有了抽象类——它包含可复用部分，但又不允许实例化。  &lt;p&gt;因此，&lt;b&gt;抽象类的使用动机是在不允许实例化的限制下复用代码。&lt;/b&gt;请牢记这个动机。  &lt;p&gt;接着再说说接口和CAN-DO关系。  &lt;p&gt;我们知道，面向对象编程的基本思想就是通过对象间的相互协作，完成程序的功能。具体来说，在面向对象编程中，要求每个类都隐藏内部细节（这叫封装性），仅对外暴露一组公共方法，对象间就通过互相调用彼此的公共方法完成程序功能。  &lt;p&gt;可以看到，面向对象思想中，对象和对象间根本不需要了解，调用者甚至可以完全不知道被调用者是谁，只要知道被调用者“能干什么”就行了。这就如同拨打110报警一样，你根本不知道对方长什么样、穿什么衣服、结没结婚、有没有孩子，你也不知道对方在哪，对象是谁，但是你知道对方一定“能接警”，所以你可以顺利完成报警。  &lt;p&gt;这种“能干什么”就是CAN-DO关系，当我们把这种CAN-DO关系抽象出来，形成一个CAN-DO关系的集合，这就是接口了。那么使用接口的动机又是什么呢？&lt;b&gt;动机之一是松散耦合。&lt;/b&gt;我们知道“低耦合”是面向对象程序设计中一个重要原则，而很大一部分耦合就是调用关系，面向对象中术语叫“依赖”。如果没有接口，调用者就要紧依赖于被调用者，就如同在没有110报警的年代，你只认识一个接警员，不知道其他接警员的电话，那么当你报警时，你必须给这个接警员打电话才行，如果哪天这个接警员休假或病了，你就无法报警了，除非你再去认识一个接警员。这时，我们说你紧依赖于这个接警员，也叫紧耦合。但有了110报警后就不一样了，我们将“可接警”看作一个接口，接口中有一个方法“接警”，而拨通110后，电话那头的人一定是实现了这个接口的，这时报警人不再依赖于具体接警员，而是依赖于“可接警”接口，这就叫做松依赖。  &lt;p&gt;所以说，&lt;b&gt;接口又可以看作一组规则的集合，它是对调用者的保证，对被调用者的约束。&lt;/b&gt;如上例中，可接警对报警人（调用者）保证调用对象可接警，同时约束接警部门必须把一个实现了这个接口的人安排在接警电话前面。哪怕这是个机器人或刚进行了两个小时接警培训的保洁员都没关系。  &lt;p&gt;&lt;b&gt;使用接口的另一个动机就是实现多态性&lt;/b&gt;&lt;a href="#_ftn2_3152" name="_ftnref2_3152"&gt;&lt;b&gt;&lt;b&gt;[&lt;/b&gt;&lt;b&gt;②]&lt;/b&gt;&lt;/b&gt;&lt;/a&gt;&lt;b&gt;。&lt;/b&gt;  &lt;p&gt;下面想象你被分配到一个全新的研发小组做主管，第一天上班的早晨，一群人站在你面前等着你训话，你完全不认识他们，也不知道他们各自的职务，但是你可以说一句“都去工作吧”，于是大家作鸟兽散，程序员去写程序，会计去核对账目，业务员出门联系客户……当你这样做的时候，你就利用接口实现了多态性。因为你知道，他们都实现了“可工作”这个接口，虽然各个人员对“工作”具体的实现不一样，但这不要紧，你只要调用他们的“工作”方法，他们就各自做自己的事情了。如果你不能面向接口去利用多态性，你就要一个个说：“程序员去写程序，会计去核账，业务员快出门联系客户……”，这实在非常的费劲。  &lt;p&gt;对这一节的内容做一个总结：  &lt;p&gt;&lt;b&gt;抽象类表示&lt;/b&gt;&lt;b&gt;“&lt;/b&gt;&lt;b&gt;是一个（&lt;/b&gt;&lt;b&gt;IS-A&lt;/b&gt;&lt;b&gt;）&lt;/b&gt;&lt;b&gt;”&lt;/b&gt;&lt;b&gt;关系的抽象，它抽象了类的本体，其使用动机是在不允许实例化的限制下复用代码。接口表示&lt;/b&gt;&lt;b&gt;“&lt;/b&gt;&lt;b&gt;能（&lt;/b&gt;&lt;b&gt;CAN-DO&lt;/b&gt;&lt;b&gt;）&lt;/b&gt;&lt;b&gt;”&lt;/b&gt;&lt;b&gt;关系的抽象，它抽象了类的行为，其使用动机是松散对象间的耦合以及实现程序多态性。&lt;/b&gt;&lt;b&gt;&lt;/b&gt;  &lt;p&gt;好的，照例念十遍吧，不过这次我允许你默念，因为我怕这次飞来的不是鸡蛋而是砖头。  &lt;p&gt;经过上面的分析，我想你已经可以很容易在抽象类与接口间做出选择了。如果你是为了将一系列类的公共代码抽出，减少代码的重复，并且这些类与抽象出来的类可以表述为IS-A关系，就用抽象类；如果你是为了将一个或一组行为抽象出来，用以松散对象间耦合或实现多态性，那就用接口吧。  &lt;p&gt;&lt;strong&gt;3. C#中抽象类与接口的探讨&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;这一节我们讨论C#语言中一个是人尽皆知的区别：&lt;b&gt;在&lt;/b&gt;&lt;b&gt;C#&lt;/b&gt;&lt;b&gt;中，一个类最多只能继承一个抽象类，但可以实现多个接口。&lt;/b&gt;  &lt;p&gt;如果能充分理解抽象类对应于IS-A而接口对应于CAN-DO，则对这个约束不会感到奇怪。因为从逻辑上来说，一个类在所有相同抽象层次的类中只能“是其中一个”，但“能干多种事情”。这里的相同抽象层次指互相不存在继承关系的一个全集。  &lt;p&gt;例如，{猪，牛，狗，猫} 可以看作具有相同抽象层次，其某个下层类只能是其中一个的子类，一个类不可能既是牛的子类又是猪的子类，但有可能既是牛的子类又是动物的子类，例如奶牛，这是因为“动物”与“牛”不在一个抽象层次上，“牛”本身就是“动物”的一个子类。  &lt;p&gt;&lt;b&gt;一般的，如果&lt;/b&gt;&lt;b&gt;ClassA&lt;/b&gt;&lt;b&gt;是&lt;/b&gt;&lt;b&gt;ClassB&lt;/b&gt;&lt;b&gt;的子类，同时也是&lt;/b&gt;&lt;b&gt;ClassC&lt;/b&gt;&lt;b&gt;的子类，那么一定存在&lt;/b&gt;&lt;b&gt;ClassB&lt;/b&gt;&lt;b&gt;是&lt;/b&gt;&lt;b&gt;ClassC&lt;/b&gt;&lt;b&gt;的子类或&lt;/b&gt;&lt;b&gt;ClassC&lt;/b&gt;&lt;b&gt;是&lt;/b&gt;&lt;b&gt;ClassB&lt;/b&gt;&lt;b&gt;的子类。&lt;/b&gt;&lt;b&gt;&lt;/b&gt;  &lt;p&gt;换句话说，一个类同时继承两个互相没有继承关系的类在逻辑上是不成立的。这就说明了为什么C#中不允许同时继承一个以上的抽象类。如果一个类要继承两个抽象类，那么从逻辑上来说，两个抽象类之间必然也存在继承关系，因此只需让该类继承较具体的那个抽象类即可。例如，本来的设计为“奶牛”同时继承“牛”和“动物”，但很容易发现，“牛”和“动物”已经存在继承关系，“牛”是继承于“动物”的，因此可将继承关系修改为“奶牛”只继承“牛”，而让“牛”继承于“动物”，这样就消除了多重继承。  &lt;p&gt;而接口的CAN-DO关系在逻辑上不存在这样的矛盾，所以C#允许实现多个接口，具体为什么请读者自己思考。  &lt;p&gt;顺便说一句，C++中允许多重继承是因为C++中非抽象类、抽象类和接口都用类来实现，而没有在语言层面区分成不同的语言元素，其实如果设计良好，也是不应该出现对抽象类的多重继承的，C#在语言层面上进行了约束，更有利于良好的设计，而C++对这方面比较灵活，需要开发者自己把握，因此C++对于初学者把握抽象类与方法更困难一些。  &lt;p&gt;张洋  &lt;p&gt;2010.08.28  &lt;p&gt;leoo2sk.cnblogs.com  &lt;hr align="left" size="1" width="33%"&gt;  &lt;p&gt;&lt;a href="#_ftnref1_3152" name="_ftn1_3152"&gt;[①]&lt;/a&gt; C++中的纯虚方法指不含有实现代码的方法，对应于C#中用abstract修饰的方法。  &lt;p&gt;&lt;a href="#_ftnref2_3152" name="_ftn2_3152"&gt;[②]&lt;/a&gt; 尽管使用抽象类有时也是为了实现多态性，但其动机完全没有使用接口这么直接，而且我个人更赞同将需要多态的方法抽象成接口的做法。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/BeginnerClassroom/aggbug/1854257.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/10/18/1854257.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/BeginnerClassroom/archive/2010/09/13/1824908.html</id><title type="text">《叩响C#之门》正则表达式（六）    预查（零宽断言）</title><summary type="text">审查征集贴：http://www.cnblogs.com/BeginnerClassroom/archive/2010/07/30/1788649.html 附录征集贴：http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1792175.html 欢迎各位园友对本书的某一部分内容进行拓展，将以附录的形式附在书后。 要求：  紧紧围...</summary><published>2010-09-13T04:46:00Z</published><updated>2010-09-13T04:46:00Z</updated><author><name>寒飞雨</name><uri>http://www.cnblogs.com/BeginnerClassroom/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/09/13/1824908.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/09/13/1824908.html"/><content type="html">&lt;p align="left"&gt;审查征集贴：&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/07/30/1788649.html"&gt;http://www.cnblogs.com/BeginnerClassroom/archive/2010/07/30/1788649.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;附录征集贴：&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1792175.html"&gt;http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1792175.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;欢迎各位园友对本书的某一部分内容进行拓展，将以附录的形式附在书后。&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;要求：&lt;/p&gt; &lt;ol&gt; &lt;li&gt;紧紧围绕一两个中心展开；  &lt;li&gt;逻辑清晰，行文流畅；  &lt;li&gt;考虑到初学者的基础。  &lt;li&gt;写作时间最好不要少于一星期。&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;我写东西都是写好以后先放在那里，过段时间再读，重新修改，如此反复几次，就基本上很流畅了。&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;（PS：会署名，但无稿费，因为本来就没多少，不够分的。当然如果发了大财，我会分给大家的。）&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="649"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="407"&gt;标题&lt;/td&gt; &lt;td valign="top" width="147"&gt;作者&lt;/td&gt; &lt;td valign="top" width="93"&gt;状态&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="403"&gt;&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1791922.html"&gt;关于RichTextBox修改字体大小的研究&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="150"&gt;李雨来&lt;/td&gt; &lt;td valign="top" width="94"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="401"&gt;委托和接口的策略延迟思想&lt;/td&gt; &lt;td valign="top" width="152"&gt;汤非凡&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="399"&gt;XML格式注释&lt;/td&gt; &lt;td valign="top" width="154"&gt;张智鸣&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="397"&gt;抽象类与接口的区别及应用&lt;/td&gt; &lt;td valign="top" width="155"&gt;&lt;a href="http://home.cnblogs.com/leoo2sk/"&gt;张洋&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="397"&gt;.NET版本变更史&lt;/td&gt; &lt;td valign="top" width="156"&gt;张智鸣&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="396"&gt;字符编码&lt;/td&gt; &lt;td valign="top" width="157"&gt;赵士敬&lt;/td&gt; &lt;td valign="top" width="95"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;流的应用实例&lt;/td&gt; &lt;td valign="top" width="158"&gt;黄志斌&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;通过在线评测平台磨砺C#能力&lt;/td&gt; &lt;td valign="top" width="158"&gt;曹如进&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;正则表达式在EmEditor里的应用&lt;/td&gt; &lt;td valign="top" width="158"&gt;柳永法&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt; &lt;p&gt;C#程序编码规范&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="159"&gt;顾磊&lt;font color="#ff0000"&gt;&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="96"&gt;已完稿&lt;strong&gt;&lt;font color="#ff0000"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;&lt;font color="#ff0000"&gt;异步读写操作&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="159"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="96"&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;待选&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;控件开发、自定义控件&lt;/td&gt; &lt;td valign="top" width="159"&gt;&lt;a href="http://home.cnblogs.com/146300/"&gt;MingHao_Hu&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="96"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;&lt;font color="#ff0000"&gt;结构和类的联系与区别&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="159"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="96"&gt;&lt;font color="#ff0000"&gt;待选&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;绘图缓存&lt;/td&gt; &lt;td valign="top" width="159"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="96"&gt;&lt;strong&gt;待选&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;正则表达式应用实例&lt;/td&gt; &lt;td valign="top" width="159"&gt;&lt;a href="http://www.cnblogs.com/skyiv/"&gt;空军&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="96"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;（欢迎您提供其他附录）&lt;/td&gt; &lt;td valign="top" width="159"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="96"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;第&amp;nbsp; 20 章 正则表达式&lt;/strong&gt;&lt;/p&gt; &lt;p&gt; 20.1&amp;nbsp; &lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/17/1801908.html"&gt;字符匹配&lt;/a&gt;&lt;br&gt; 20.2&amp;nbsp; 可选字符集&lt;br&gt; 20.3&amp;nbsp; 或匹配&lt;br&gt; &lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/28/1811041.html"&gt;20.4&amp;nbsp; 数量限定符&lt;/a&gt;&lt;br&gt; &lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/30/1812547.html"&gt;20.5&amp;nbsp; 贪婪和懒惰&lt;/a&gt;&lt;br&gt; &lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/09/06/1818976.html"&gt;20.6&amp;nbsp; 定位符&lt;/a&gt;&lt;br&gt; &lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/09/08/1821354.html"&gt;20.7&amp;nbsp; 分组和后向引用&lt;/a&gt;&lt;br&gt; 20.8&amp;nbsp; 替换文本&lt;br&gt; 20.9&amp;nbsp; 非捕获分组和预查&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1．非捕获分组?:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2．正向预查?=&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3．反向预查?&amp;lt;=&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4．负正向预查?!&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5．负反向预查?&amp;lt;!&lt;br&gt;20.10&amp;nbsp; 正则表达式的类 &lt;p&gt;20.11&amp;nbsp; 注释&lt;br&gt;20.12&amp;nbsp; 正则表达式的选项&lt;br&gt;20.13&amp;nbsp; 练习：验证用户输入  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/BeginnerClassroom/WindowsLiveWriter/C_B35F/image_711264fa-9e1f-4f1a-9c8d-a00a5c5f53e7.png" width="668" height="1020"&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/BeginnerClassroom/WindowsLiveWriter/C_B35F/image_8ee7ca2b-b80c-4e6e-b838-bc1677a5d759.png" width="668" height="1020"&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/BeginnerClassroom/WindowsLiveWriter/C_B35F/image_83852b97-0ba5-4789-9499-b8154b5e4a66.png" width="668" height="1020"&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/BeginnerClassroom/WindowsLiveWriter/C_B35F/image_71ab9d01-5bc9-4731-a60f-11051d75842b.png" width="668" height="1020"&gt;  &lt;h1 align="center"&gt;&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/BeginnerClassroom/aggbug/1824908.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/09/13/1824908.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/BeginnerClassroom/archive/2010/09/08/1821354.html</id><title type="text">《叩响C#之门》正则表达式（五）  分组、后向引用、替换</title><summary type="text">审查征集贴：http://www.cnblogs.com/BeginnerClassroom/archive/2010/07/30/1788649.html 附录征集贴：http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1792175.html 欢迎各位园友对本书的某一部分内容进行拓展，将以附录的形式附在书后。 要求：  紧紧围...</summary><published>2010-09-08T05:25:00Z</published><updated>2010-09-08T05:25:00Z</updated><author><name>寒飞雨</name><uri>http://www.cnblogs.com/BeginnerClassroom/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/09/08/1821354.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/09/08/1821354.html"/><content type="html">&lt;p align="left"&gt;审查征集贴：&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/07/30/1788649.html"&gt;http://www.cnblogs.com/BeginnerClassroom/archive/2010/07/30/1788649.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;附录征集贴：&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1792175.html"&gt;http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1792175.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;欢迎各位园友对本书的某一部分内容进行拓展，将以附录的形式附在书后。&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;要求：&lt;/p&gt; &lt;ol&gt; &lt;li&gt;紧紧围绕一两个中心展开；  &lt;li&gt;逻辑清晰，行文流畅；  &lt;li&gt;考虑到初学者的基础。  &lt;li&gt;写作时间最好不要少于一星期。&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;我写东西都是写好以后先放在那里，过段时间再读，重新修改，如此反复几次，就基本上很流畅了。&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;（PS：会署名，但无稿费，因为本来就没多少，不够分的。当然如果发了大财，我会分给大家的。）&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="649"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="407"&gt;标题&lt;/td&gt; &lt;td valign="top" width="147"&gt;作者&lt;/td&gt; &lt;td valign="top" width="93"&gt;状态&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="403"&gt;&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1791922.html"&gt;关于RichTextBox修改字体大小的研究&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="150"&gt;李雨来&lt;/td&gt; &lt;td valign="top" width="94"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="401"&gt;委托和接口的策略延迟思想&lt;/td&gt; &lt;td valign="top" width="152"&gt;汤非凡&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="399"&gt;XML格式注释&lt;/td&gt; &lt;td valign="top" width="154"&gt;张智鸣&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="397"&gt;抽象类与接口的区别及应用&lt;/td&gt; &lt;td valign="top" width="155"&gt;&lt;a href="http://home.cnblogs.com/leoo2sk/"&gt;张洋&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="397"&gt;.NET版本变更史&lt;/td&gt; &lt;td valign="top" width="156"&gt;张智鸣&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="396"&gt;字符编码&lt;/td&gt; &lt;td valign="top" width="157"&gt;赵士敬&lt;/td&gt; &lt;td valign="top" width="95"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;流的应用实例&lt;/td&gt; &lt;td valign="top" width="158"&gt;黄志斌&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;通过在线评测平台磨砺C#能力&lt;/td&gt; &lt;td valign="top" width="158"&gt;曹如进&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;正则表达式在EmEditor里的应用&lt;/td&gt; &lt;td valign="top" width="158"&gt;柳永法&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt; &lt;p&gt;C#程序编码规范&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="159"&gt;顾磊&lt;font color="#ff0000"&gt;&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="96"&gt;已完稿&lt;strong&gt;&lt;font color="#ff0000"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;&lt;font color="#ff0000"&gt;异步读写操作&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="159"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="96"&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;待选&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;控件开发、自定义控件&lt;/td&gt; &lt;td valign="top" width="159"&gt;&lt;a href="http://home.cnblogs.com/146300/"&gt;MingHao_Hu&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="96"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;&lt;font color="#ff0000"&gt;结构和类的联系与区别&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="159"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="96"&gt;&lt;font color="#ff0000"&gt;待选&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;绘图缓存&lt;/td&gt; &lt;td valign="top" width="159"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="96"&gt;&lt;strong&gt;待选&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;正则表达式应用实例&lt;/td&gt; &lt;td valign="top" width="159"&gt;&lt;a href="http://www.cnblogs.com/skyiv/"&gt;空军&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="96"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;（欢迎您提供其他附录）&lt;/td&gt; &lt;td valign="top" width="159"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="96"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/BeginnerClassroom/WindowsLiveWriter/C_BCAD/image_b83eb96d-85f3-4ae2-92ca-367d3824ba10.png" width="668" height="1020"&gt; &lt;/p&gt; &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/BeginnerClassroom/WindowsLiveWriter/C_BCAD/image_53e573ab-d08b-469b-9795-76375ac582fa.png" width="668" height="1020"&gt; &lt;/p&gt; &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/BeginnerClassroom/WindowsLiveWriter/C_BCAD/image_be814828-2046-4102-8c9f-734ff576bb8c.png" width="668" height="1020"&gt; &lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;h1 align="center"&gt;&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/BeginnerClassroom/aggbug/1821354.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/09/08/1821354.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/BeginnerClassroom/archive/2010/09/06/1818976.html</id><title type="text">《叩响C#之门》正则表达式 （四） 定位符</title><summary type="text">审查征集贴：http://www.cnblogs.com/BeginnerClassroom/archive/2010/07/30/1788649.html 附录征集贴：http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1792175.html 欢迎各位园友对本书的某一部分内容进行拓展，将以附录的形式附在书后。 要求：  紧紧围...</summary><published>2010-09-06T04:56:00Z</published><updated>2010-09-06T04:56:00Z</updated><author><name>寒飞雨</name><uri>http://www.cnblogs.com/BeginnerClassroom/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/09/06/1818976.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/09/06/1818976.html"/><content type="html">&lt;p align="left"&gt;审查征集贴：&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/07/30/1788649.html"&gt;http://www.cnblogs.com/BeginnerClassroom/archive/2010/07/30/1788649.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;附录征集贴：&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1792175.html"&gt;http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1792175.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;欢迎各位园友对本书的某一部分内容进行拓展，将以附录的形式附在书后。&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;要求：&lt;/p&gt; &lt;ol&gt; &lt;li&gt;紧紧围绕一两个中心展开；  &lt;li&gt;逻辑清晰，行文流畅；  &lt;li&gt;考虑到初学者的基础。  &lt;li&gt;写作时间最好不要少于一星期。&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;我写东西都是写好以后先放在那里，过段时间再读，重新修改，如此反复几次，就基本上很流畅了。&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;（PS：会署名，但无稿费，因为本来就没多少，不够分的。当然如果发了大财，我会分给大家的。）&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="649"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="407"&gt;标题&lt;/td&gt; &lt;td valign="top" width="147"&gt;作者&lt;/td&gt; &lt;td valign="top" width="93"&gt;状态&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="403"&gt;&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1791922.html"&gt;关于RichTextBox修改字体大小的研究&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="150"&gt;李雨来&lt;/td&gt; &lt;td valign="top" width="94"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="401"&gt;委托和接口的策略延迟思想&lt;/td&gt; &lt;td valign="top" width="152"&gt;汤非凡&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="399"&gt;XML格式注释&lt;/td&gt; &lt;td valign="top" width="154"&gt;张智鸣&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="397"&gt;抽象类与接口的区别及应用&lt;/td&gt; &lt;td valign="top" width="155"&gt;&lt;a href="http://home.cnblogs.com/leoo2sk/"&gt;张洋&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="397"&gt;.NET版本变更史&lt;/td&gt; &lt;td valign="top" width="156"&gt;张智鸣&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="396"&gt;字符编码&lt;/td&gt; &lt;td valign="top" width="157"&gt;赵士敬&lt;/td&gt; &lt;td valign="top" width="95"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;流的应用实例&lt;/td&gt; &lt;td valign="top" width="158"&gt;黄志斌&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;通过在线评测平台磨砺C#能力&lt;/td&gt; &lt;td valign="top" width="158"&gt;曹如进&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;正则表达式在EmEditor里的应用&lt;/td&gt; &lt;td valign="top" width="158"&gt;柳永法&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt; &lt;p&gt;C#程序编码规范&lt;/p&gt;&lt;/td&gt; &lt;td valign="top" width="159"&gt;顾磊&lt;font color="#ff0000"&gt;&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="96"&gt;已完稿&lt;strong&gt;&lt;font color="#ff0000"&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;&lt;font color="#ff0000"&gt;异步读写操作&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="159"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="96"&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;待选&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;控件开发、自定义控件&lt;/td&gt; &lt;td valign="top" width="159"&gt;&lt;a href="http://home.cnblogs.com/146300/"&gt;MingHao_Hu&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="96"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;&lt;font color="#ff0000"&gt;结构和类的联系与区别&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="159"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="96"&gt;&lt;font color="#ff0000"&gt;待选&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;绘图缓存&lt;/td&gt; &lt;td valign="top" width="159"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="96"&gt;&lt;strong&gt;待选&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;正则表达式应用实例&lt;/td&gt; &lt;td valign="top" width="159"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="96"&gt;待选&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;（欢迎您提供其他附录）&lt;/td&gt; &lt;td valign="top" width="159"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="96"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;第&amp;nbsp; 20章&amp;nbsp; 正则表达式&lt;br&gt; &lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/17/1801908.html"&gt;20.1&amp;nbsp; 字符匹配&lt;/a&gt;&lt;br&gt; &lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/17/1801908.html"&gt;20.2&amp;nbsp; 可选字符集&lt;/a&gt;&lt;br&gt; &lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/17/1801908.html"&gt;20.3&amp;nbsp; 或匹配&lt;/a&gt;&lt;br&gt; &lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/28/1811041.html"&gt;20.4&amp;nbsp; 数量限定符&lt;/a&gt;&lt;br&gt; &lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/30/1812547.html"&gt;20.5&amp;nbsp; 贪婪和懒惰&lt;/a&gt;&lt;br&gt; 20.6&amp;nbsp; 定位符&lt;br&gt; 20.7&amp;nbsp; 分组和后向引用&lt;br&gt; 20.8&amp;nbsp; 替换文本&lt;br&gt; 20.9&amp;nbsp; 非捕获分组和预查&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1．非捕获分组?:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2．正向预查?=&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3．反向预查?&amp;lt;=&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4．负正向预查?!&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5．负反向预查?&amp;lt;!&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6．注释#&lt;br&gt;20.10&amp;nbsp; 正则表达式的类&lt;br&gt;20.11&amp;nbsp; 正则表达式的选项&lt;br&gt;20.12&amp;nbsp; 练习：验证用户输入  &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/BeginnerClassroom/WindowsLiveWriter/C_B5D6/image_4f56ea35-5125-45d0-affd-eaf7249499de.png" width="668" height="1020"&gt; &lt;/p&gt; &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/BeginnerClassroom/WindowsLiveWriter/C_B5D6/image_cea26178-6673-40e8-8951-e850f2bcccd8.png" width="668" height="1020"&gt; &lt;/p&gt; &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/BeginnerClassroom/WindowsLiveWriter/C_B5D6/image_0b477a29-939b-4208-824c-726598661640.png" width="668" height="1020"&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/BeginnerClassroom/aggbug/1818976.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/09/06/1818976.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/30/1812547.html</id><title type="text">《叩响C#之门》正则表达式 （三）   贪婪与懒惰</title><summary type="text">审查征集贴：http://www.cnblogs.com/BeginnerClassroom/archive/2010/07/30/1788649.html 附录征集贴：http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1792175.html 欢迎各位园友对本书的某一部分内容进行拓展，将以附录的形式附在书后。 要求：  紧紧围...</summary><published>2010-08-30T05:26:00Z</published><updated>2010-08-30T05:26:00Z</updated><author><name>寒飞雨</name><uri>http://www.cnblogs.com/BeginnerClassroom/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/30/1812547.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/30/1812547.html"/><content type="html">&lt;p align="left"&gt;审查征集贴：&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/07/30/1788649.html"&gt;http://www.cnblogs.com/BeginnerClassroom/archive/2010/07/30/1788649.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;附录征集贴：&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1792175.html"&gt;http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1792175.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;欢迎各位园友对本书的某一部分内容进行拓展，将以附录的形式附在书后。&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;要求：&lt;/p&gt; &lt;ol&gt; &lt;li&gt;紧紧围绕一两个中心展开；  &lt;li&gt;逻辑清晰，行文流畅；  &lt;li&gt;考虑到初学者的基础。  &lt;li&gt;写作时间最好不要少于一星期。&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;我写东西都是写好以后先放在那里，过段时间再读，重新修改，如此反复几次，就基本上很流畅了。&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;（PS：会署名，但无稿费，因为本来就没多少，不够分的。当然如果发了大财，我会分给大家的。）&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="649"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="407"&gt;标题&lt;/td&gt; &lt;td valign="top" width="147"&gt;作者&lt;/td&gt; &lt;td valign="top" width="93"&gt;状态&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="403"&gt;&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1791922.html"&gt;关于RichTextBox修改字体大小的研究&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="150"&gt;李雨来&lt;/td&gt; &lt;td valign="top" width="94"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="401"&gt;委托和接口的策略延迟思想&lt;/td&gt; &lt;td valign="top" width="152"&gt;汤非凡&lt;/td&gt; &lt;td valign="top" width="95"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="399"&gt;XML格式注释&lt;/td&gt; &lt;td valign="top" width="154"&gt;张智鸣&lt;/td&gt; &lt;td valign="top" width="95"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="397"&gt;接口与抽象类的比较&lt;/td&gt; &lt;td valign="top" width="155"&gt;&lt;a href="http://home.cnblogs.com/leoo2sk/"&gt;EricZhang(T2噬菌体)&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="95"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="397"&gt;.NET版本变更史&lt;/td&gt; &lt;td valign="top" width="156"&gt;张智鸣&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="396"&gt;字符编码&lt;/td&gt; &lt;td valign="top" width="157"&gt;赵士敬&lt;/td&gt; &lt;td valign="top" width="95"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;流的应用实例&lt;/td&gt; &lt;td valign="top" width="158"&gt;黄志斌&lt;/td&gt; &lt;td valign="top" width="95"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;正则表达式在EmEditor里的应用&lt;/td&gt; &lt;td valign="top" width="158"&gt;柳永法&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;&lt;font color="#ff0000"&gt;绘图缓存&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="159"&gt;&lt;font color="#ff0000"&gt;&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="96"&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;待选&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;&lt;font color="#ff0000"&gt;异步读写操作&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="159"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="96"&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;待选&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;控件开发、自定义控件&lt;/td&gt; &lt;td valign="top" width="159"&gt;&lt;a href="http://home.cnblogs.com/146300/"&gt;MingHao_Hu&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="96"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;&lt;font color="#ff0000"&gt;结构和类的联系与区别&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="159"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="96"&gt;&lt;font color="#ff0000"&gt;待选&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;C#程序编码规范&lt;/td&gt; &lt;td valign="top" width="159"&gt;顾磊&lt;/td&gt; &lt;td valign="top" width="96"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;（欢迎您提供附录）&lt;/td&gt; &lt;td valign="top" width="159"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="96"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;p&gt;第&amp;nbsp; 20章&amp;nbsp; 正则表达式&lt;br&gt; &lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/17/1801908.html"&gt;20.1&amp;nbsp; 字符匹配&lt;/a&gt;&lt;br&gt; &lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/17/1801908.html"&gt;20.2&amp;nbsp; 可选字符集&lt;/a&gt;&lt;br&gt; &lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/17/1801908.html"&gt;20.3&amp;nbsp; 或匹配&lt;/a&gt;&lt;br&gt; &lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/28/1811041.html"&gt;20.4&amp;nbsp; 数量限定符&lt;/a&gt;&lt;br&gt; 20.5&amp;nbsp; 贪婪和懒惰&lt;br&gt; 20.6&amp;nbsp; 定位符&lt;br&gt; 20.7&amp;nbsp; 分组和后向引用&lt;br&gt; 20.8&amp;nbsp; 替换文本&lt;br&gt; 20.9&amp;nbsp; 非捕获分组和预查&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1．非捕获分组?:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2．正向预查?=&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3．反向预查?&amp;lt;=&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4．负正向预查?!&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5．负反向预查?&amp;lt;!&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6．注释#&lt;br&gt;20.10&amp;nbsp; 正则表达式的类&lt;br&gt;20.11&amp;nbsp; 正则表达式的选项&lt;br&gt;20.12&amp;nbsp; 练习：验证用户输入 &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/BeginnerClassroom/WindowsLiveWriter/C_BCE7/image_bb5f04e8-e590-4627-bfc9-162fb9a54b6c.png" width="668" height="1020"&gt; &lt;/p&gt; &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/BeginnerClassroom/WindowsLiveWriter/C_BCE7/image_52b870d7-53e6-43fd-82d9-0cbdc7292eb6.png" width="668" height="1020"&gt; &lt;/p&gt; &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/BeginnerClassroom/WindowsLiveWriter/C_BCE7/image_4547507a-211c-496e-9ffd-de73ade1b897.png" width="668" height="1020"&gt; &lt;/p&gt; &lt;h1 align="center"&gt;&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/BeginnerClassroom/aggbug/1812547.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/30/1812547.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/28/1811041.html</id><title type="text">《叩响C#之门》正则表达式（二）数量限定符</title><summary type="text">审查征集贴：http://www.cnblogs.com/BeginnerClassroom/archive/2010/07/30/1788649.html 附录征集贴：http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1792175.html 欢迎各位园友对本书的某一部分内容进行拓展，将以附录的形式附在书后。 要求：  紧紧围...</summary><published>2010-08-28T05:21:00Z</published><updated>2010-08-28T05:21:00Z</updated><author><name>寒飞雨</name><uri>http://www.cnblogs.com/BeginnerClassroom/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/28/1811041.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/28/1811041.html"/><content type="html">&lt;p align="left"&gt;审查征集贴：&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/07/30/1788649.html"&gt;http://www.cnblogs.com/BeginnerClassroom/archive/2010/07/30/1788649.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;附录征集贴：&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1792175.html"&gt;http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1792175.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;欢迎各位园友对本书的某一部分内容进行拓展，将以附录的形式附在书后。&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;要求：&lt;/p&gt; &lt;ol&gt; &lt;li&gt;紧紧围绕一两个中心展开；  &lt;li&gt;逻辑清晰，行文流畅；  &lt;li&gt;考虑到初学者的基础。  &lt;li&gt;写作时间最好不要少于一星期。&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;我写东西都是写好以后先放在那里，过段时间再读，重新修改，如此反复几次，就基本上很流畅了。&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;（PS：会署名，但无稿费，因为本来就没多少，不够分的。当然如果发了大财，我会分给大家的。）&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="649"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="407"&gt;标题&lt;/td&gt; &lt;td valign="top" width="147"&gt;作者&lt;/td&gt; &lt;td valign="top" width="93"&gt;状态&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="403"&gt;&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1791922.html"&gt;关于RichTextBox修改字体大小的研究&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="150"&gt;李雨来&lt;/td&gt; &lt;td valign="top" width="94"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="401"&gt;委托和接口的策略延迟思想&lt;/td&gt; &lt;td valign="top" width="152"&gt;汤非凡&lt;/td&gt; &lt;td valign="top" width="95"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="399"&gt;XML格式注释&lt;/td&gt; &lt;td valign="top" width="154"&gt;张智鸣&lt;/td&gt; &lt;td valign="top" width="95"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="397"&gt;接口与抽象类的比较&lt;/td&gt; &lt;td valign="top" width="155"&gt;&lt;a href="http://home.cnblogs.com/leoo2sk/"&gt;EricZhang(T2噬菌体)&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="95"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="397"&gt;.NET版本变更史&lt;/td&gt; &lt;td valign="top" width="156"&gt;张智鸣&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="396"&gt;字符编码&lt;/td&gt; &lt;td valign="top" width="157"&gt;赵士敬&lt;/td&gt; &lt;td valign="top" width="95"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;流的应用实例&lt;/td&gt; &lt;td valign="top" width="158"&gt;黄志斌&lt;/td&gt; &lt;td valign="top" width="95"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;正则表达式在EmEditor里的应用&lt;/td&gt; &lt;td valign="top" width="158"&gt;柳永法&lt;/td&gt; &lt;td valign="top" width="95"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;&lt;font color="#ff0000"&gt;绘图缓存&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="159"&gt;&lt;font color="#ff0000"&gt;&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="96"&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;待选&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;&lt;font color="#ff0000"&gt;异步读写操作&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="159"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="96"&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;待选&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;控件开发、自定义控件&lt;/td&gt; &lt;td valign="top" width="159"&gt;&lt;a href="http://home.cnblogs.com/146300/"&gt;MingHao_Hu&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="96"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;&lt;font color="#ff0000"&gt;结构和类的联系与区别&lt;/font&gt;&lt;/td&gt; &lt;td valign="top" width="159"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="96"&gt;&lt;font color="#ff0000"&gt;待选&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;C#程序编码规范&lt;/td&gt; &lt;td valign="top" width="159"&gt;顾磊&lt;/td&gt; &lt;td valign="top" width="96"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;（欢迎您提供其他附录）&lt;/td&gt; &lt;td valign="top" width="159"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="96"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;第&amp;nbsp; 20章&amp;nbsp; 正则表达式&lt;br&gt; &lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/17/1801908.html"&gt;20.1&amp;nbsp; 字符匹配&lt;/a&gt;&lt;br&gt; &lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/17/1801908.html"&gt;20.2&amp;nbsp; 可选字符集&lt;/a&gt;&lt;br&gt; &lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/17/1801908.html"&gt;20.3&amp;nbsp; 或匹配&lt;/a&gt;&lt;br&gt; &lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/28/1811041.html"&gt;20.4&amp;nbsp; 数量限定符&lt;/a&gt;&lt;br&gt; 20.5&amp;nbsp; 贪婪和懒惰&lt;br&gt; 20.6&amp;nbsp; 定位符&lt;br&gt; 20.7&amp;nbsp; 分组和后向引用&lt;br&gt; 20.8&amp;nbsp; 替换文本&lt;br&gt; 20.9&amp;nbsp; 非捕获分组和预查&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1．非捕获分组?:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2．正向预查?=&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3．反向预查?&amp;lt;=&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4．负正向预查?!&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5．负反向预查?&amp;lt;!&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6．注释#&lt;br&gt;20.10&amp;nbsp; 正则表达式的类&lt;br&gt;20.11&amp;nbsp; 正则表达式的选项&lt;br&gt;20.12&amp;nbsp; 练习：验证用户输入&lt;/p&gt; &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/BeginnerClassroom/WindowsLiveWriter/C_BA85/image_6fa5a521-641b-4158-aa5b-b8b3ab11287c.png" width="668" height="1020"&gt; &lt;/p&gt; &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/BeginnerClassroom/WindowsLiveWriter/C_BA85/image_ad1bbf2f-9a73-47ef-a20a-5cd6894d0b84.png" width="668" height="1020"&gt; &lt;/p&gt; &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/BeginnerClassroom/WindowsLiveWriter/C_BA85/image_2bbff168-deee-4908-a7c0-71a86d4f160b.png" width="668" height="1020"&gt; &lt;/p&gt; &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/BeginnerClassroom/WindowsLiveWriter/C_BA85/image_e007e013-d686-4578-927f-29a01d35b00f.png" width="668" height="1020"&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/BeginnerClassroom/aggbug/1811041.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/28/1811041.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/17/1801908.html</id><title type="text">《叩响C#之门》 正则表达式（一）</title><summary type="text">审查征集贴：http://www.cnblogs.com/BeginnerClassroom/archive/2010/07/30/1788649.html  附录征集贴：http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1792175.html  总目录：http://www.cnblogs.com/BeginnerClass...</summary><published>2010-08-17T14:47:00Z</published><updated>2010-08-17T14:47:00Z</updated><author><name>寒飞雨</name><uri>http://www.cnblogs.com/BeginnerClassroom/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/17/1801908.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/17/1801908.html"/><content type="html">&lt;p&gt;&lt;font color="#ff0000"&gt;审查征集贴：&lt;/font&gt;&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/07/30/1788649.html"&gt;http://www.cnblogs.com/BeginnerClassroom/archive/2010/07/30/1788649.html&lt;/a&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;附录征集贴：&lt;/font&gt;&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1792175.html"&gt;http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1792175.html&lt;/a&gt;  &lt;p&gt;总目录：&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2009/09/23/1572948.html"&gt;http://www.cnblogs.com/BeginnerClassroom/archive/2009/09/23/1572948.html&lt;/a&gt;  &lt;p&gt;&lt;p&gt;第&amp;nbsp; 20章&amp;nbsp; 正则表达式&lt;br&gt; 20.1&amp;nbsp; 字符匹配&lt;br&gt; 20.2&amp;nbsp; 可选字符集&lt;br&gt; 20.3&amp;nbsp; 或匹配&lt;br&gt; 20.4&amp;nbsp; 数量限定符&lt;br&gt; 20.5&amp;nbsp; 贪婪和懒惰&lt;br&gt; 20.6&amp;nbsp; 定位符&lt;br&gt; 20.7&amp;nbsp; 分组和后向引用&lt;br&gt; 20.8&amp;nbsp; 替换文本&lt;br&gt; 20.9&amp;nbsp; 非捕获分组和预查&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1．非捕获分组?:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2．正向预查?=&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3．反向预查?&amp;lt;=&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4．负正向预查?!&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5．负反向预查?&amp;lt;!&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6．注释#&lt;br&gt;20.10&amp;nbsp; 正则表达式的类&lt;br&gt;20.11&amp;nbsp; 正则表达式的选项&lt;br&gt;20.12&amp;nbsp; 练习：验证用户输入  &lt;p&gt;&lt;a href="#_Toc269841476"&gt;&lt;/a&gt; &lt;p&gt;&lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/BeginnerClassroom/WindowsLiveWriter/C_1251C/image_eb606861-373c-4a91-8bba-1d24a0107329.png" width="668" height="1020"&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/BeginnerClassroom/WindowsLiveWriter/C_1251C/image_ac0ab614-a96d-42e0-a4f5-806b21bf960f.png" width="668" height="1020"&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/BeginnerClassroom/WindowsLiveWriter/C_1251C/image_ec02a8d5-3f18-47b7-9a7c-254b57403895.png" width="668" height="1020"&gt;  &lt;p&gt;&lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/BeginnerClassroom/WindowsLiveWriter/C_1251C/image_a5519332-abc7-45a7-a82a-0b2836dc1f3d.png" width="668" height="1020"&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/BeginnerClassroom/WindowsLiveWriter/C_1251C/image_064e9bcd-3394-4814-bba1-169735ad088a.png" width="668" height="1020"&gt;  &lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/BeginnerClassroom/WindowsLiveWriter/C_1251C/image_3804b93c-0075-4117-8ab3-01bbeaef24a9.png" width="668" height="1020"&gt;&lt;img src="http://www.cnblogs.com/BeginnerClassroom/aggbug/1801908.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/17/1801908.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/11/1797291.html</id><title type="text">《叩响C#之门》园友提供的附录（征集中，欢迎提意见）读取流时应注意的一个问题</title><summary type="text">审查征集贴：http://www.cnblogs.com/BeginnerClassroom/archive/2010/07/30/1788649.html 附录征集贴：http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1792175.html 欢迎各位园友对本书的某一部分内容进行拓展，将以附录的形式附在书后。 要求：  紧紧围...</summary><published>2010-08-11T06:24:00Z</published><updated>2010-08-11T06:24:00Z</updated><author><name>寒飞雨</name><uri>http://www.cnblogs.com/BeginnerClassroom/</uri></author><link rel="alternate" href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/11/1797291.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/11/1797291.html"/><content type="html">&lt;p align="left"&gt;审查征集贴：&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/07/30/1788649.html"&gt;http://www.cnblogs.com/BeginnerClassroom/archive/2010/07/30/1788649.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;附录征集贴：&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1792175.html"&gt;http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1792175.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;欢迎各位园友对本书的某一部分内容进行拓展，将以附录的形式附在书后。&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;要求：&lt;/p&gt; &lt;ol&gt; &lt;li&gt;紧紧围绕一两个中心展开；  &lt;li&gt;逻辑清晰，行文流畅；  &lt;li&gt;考虑到初学者的基础。  &lt;li&gt;写作时间最好不要少于一星期。&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;我写东西都是写好以后先放在那里，过段时间再读，重新修改，如此反复几次，就基本上很流畅了。&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;（PS：会署名，但无稿费，因为本来就没多少，不够分的。当然如果发了大财，我会分给大家的。）&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="649"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="407"&gt;标题&lt;/td&gt; &lt;td valign="top" width="147"&gt;作者&lt;/td&gt; &lt;td valign="top" width="93"&gt;状态&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="403"&gt;&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/04/1791922.html"&gt;关于RichTextBox修改字体大小的研究&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="150"&gt;李雨来&lt;/td&gt; &lt;td valign="top" width="94"&gt;已完稿&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="401"&gt;委托和接口的区别&lt;/td&gt; &lt;td valign="top" width="152"&gt;汤非凡&lt;/td&gt; &lt;td valign="top" width="95"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="399"&gt;XML格式注释&lt;/td&gt; &lt;td valign="top" width="154"&gt;Capricornus &lt;/td&gt; &lt;td valign="top" width="95"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="397"&gt;接口的显式实现以及与抽象类的比较&lt;/td&gt; &lt;td valign="top" width="155"&gt;顾磊&lt;/td&gt; &lt;td valign="top" width="95"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="397"&gt;.NET版本变更表&lt;/td&gt; &lt;td valign="top" width="156"&gt;张智鸣&lt;/td&gt; &lt;td valign="top" width="95"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="396"&gt;字符编码&lt;/td&gt; &lt;td valign="top" width="157"&gt;赵士敬&lt;/td&gt; &lt;td valign="top" width="95"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;读取流时应注意的一个问题&lt;/td&gt; &lt;td valign="top" width="158"&gt;黄志斌&lt;/td&gt; &lt;td valign="top" width="95"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;正则表达式在EmEditor里的应用&lt;/td&gt; &lt;td valign="top" width="158"&gt;柳永法&lt;/td&gt; &lt;td valign="top" width="95"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;绘图缓存&lt;/td&gt; &lt;td valign="top" width="159"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="96"&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;待选&lt;/font&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;异步读写操作&lt;/td&gt; &lt;td valign="top" width="159"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="96"&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;待选&lt;/strong&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;控件开发、自定义控件&lt;/td&gt; &lt;td valign="top" width="159"&gt;&lt;a href="http://home.cnblogs.com/146300/"&gt;MingHao_Hu&lt;/a&gt;&lt;/td&gt; &lt;td valign="top" width="96"&gt;正在写&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="159"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="96"&gt;&lt;font color="#ff0000"&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="395"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="159"&gt;&amp;nbsp;&lt;/td&gt; &lt;td valign="top" width="96"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;/p&gt; &lt;h2 align="center"&gt;读取流时应注意的一个问题&lt;/strong&gt;&lt;/p&gt; &lt;p align="center"&gt;（本文由黄志斌提供）  &lt;p&gt;Stream 类是所有流的抽象基类，通过它及它的子类，使程序员不必了解操作系统和基础设备的具体细节，即可对流进行“读取”、“写入”、“查询”等操作。希望本文的例子能帮助你掌握流的用法。&lt;pre&gt;下面来研究一下Stream 类及其派生类的读取数据的成员。&lt;/pre&gt;&#xD;
&lt;p&gt;Stream.Read() &#xD;
&lt;p&gt;Stream.ReadBytes() &#xD;
&lt;p&gt;BinaryReader.Read() &#xD;
&lt;p&gt;BinaryReader.ReadBytes() &#xD;
&lt;p&gt;TextReader.Read() &#xD;
&lt;p&gt;TextReader.ReadBlock ()&lt;pre&gt;Stream.Read方法用于从流中读取字节序列，并将流的当前位置提升相应的字节数。在 MSDN 中有这样一句话：“即使尚未到达流的末尾，该方法获取到的字节数仍可以能少于所请求的字节数。”现在我们写一个程序来验证这一点。&lt;/pre&gt;&lt;pre &gt;using System;&#xD;
using System.IO;&#xD;
using Skyiv.Util;&#xD;
namespace Skyiv.Ben.StreamTest&#xD;
{&#xD;
  sealed class Program&#xD;
  {&#xD;
    static void Display(string msg, int n)&#xD;
    {&#xD;
      Console.WriteLine("{0,22}: {1,7:N0}", msg, n);&#xD;
    }&#xD;
&#xD;
    static void Main()&#xD;
    {&#xD;
       var bs = new byte[128 * 1024];    //131,072&lt;/pre&gt;&lt;pre &gt;var ftp = new FtpClient("ftp://ftp.hp.com", "anonymous", "ben@skyiv.com");&#xD;
&#xD;
         &#xD;
            Stream stream = ftp.GetDownloadStream("pub/softpaq/allfiles.txt"); &#xD;
            BinaryReader binaryReader = new BinaryReader(stream);&#xD;
            TextReader textReader = new StreamReader(stream);&#xD;
            &#xD;
                        int count1 = stream.Read(bs, 0, bs.Length);&#xD;
            int count2 = stream.ReadBytes(bs.Length).Length;&#xD;
            int count3 = binaryReader.Read(bs, 0, bs.Length);&#xD;
            int count4 = binaryReader.ReadBytes(bs.Length).Length;&#xD;
            int count5 = textReader.Read(buf, 0, buf.Length);&#xD;
            int count6 = textReader.ReadBlock(buf, 0, buf.Length);&#xD;
&#xD;
            &#xD;
            Display("Expect", bs.Length);&#xD;
            Display("Stream.Read", count1);&#xD;
            Display("Stream.ReadBytes", count2);&#xD;
            Display("BinaryReader.Read", count3);&#xD;
            Display("BinaryReader.ReadBytes", count4);&#xD;
            Display("TextReader.Read", count5);&#xD;
            Display("TextReader.ReadBlock", count6); &#xD;
&#xD;
    }&#xD;
  }&#xD;
}&#xD;
&lt;/pre&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;======&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:8810ef6e-b3db-4fab-896c-0c4e71b5bad6" &gt;&lt;pre style="background-color:#FFFFFF;white-space:-moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; white-space: pre-wrap; word-wrap: break-word;overflow: auto;"&gt;&lt;span style="color: #000000;"&gt;将这个程序运行三次的结果如下：&#xD;
                Expect: &lt;/span&gt;&lt;span style="color: #800080;"&gt;131&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;072&lt;/span&gt;&lt;span style="color: #000000;"&gt;&#xD;
           Stream.Read:   &lt;/span&gt;&lt;span style="color: #800080;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;356&lt;/span&gt;&lt;span style="color: #000000;"&gt;&#xD;
      Stream.ReadBytes: &lt;/span&gt;&lt;span style="color: #800080;"&gt;131&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;072&lt;/span&gt;&lt;span style="color: #000000;"&gt;&#xD;
     BinaryReader.Read:   &lt;/span&gt;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;904&lt;/span&gt;&lt;span style="color: #000000;"&gt;&#xD;
BinaryReader.ReadBytes: &lt;/span&gt;&lt;span style="color: #800080;"&gt;131&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;072&lt;/span&gt;&lt;span style="color: #000000;"&gt;&#xD;
       TextReader.Read: &lt;/span&gt;&lt;span style="color: #800080;"&gt;123&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;812&lt;/span&gt;&lt;span style="color: #000000;"&gt;&#xD;
  TextReader.ReadBlock: &lt;/span&gt;&lt;span style="color: #800080;"&gt;131&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;072&lt;/span&gt;&lt;span style="color: #000000;"&gt;&#xD;
&#xD;
                Expect: &lt;/span&gt;&lt;span style="color: #800080;"&gt;131&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;072&lt;/span&gt;&lt;span style="color: #000000;"&gt;&#xD;
           Stream.Read:   &lt;/span&gt;&lt;span style="color: #800080;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;356&lt;/span&gt;&lt;span style="color: #000000;"&gt;&#xD;
      Stream.ReadBytes: &lt;/span&gt;&lt;span style="color: #800080;"&gt;131&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;072&lt;/span&gt;&lt;span style="color: #000000;"&gt;&#xD;
     BinaryReader.Read:   &lt;/span&gt;&lt;span style="color: #800080;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;356&lt;/span&gt;&lt;span style="color: #000000;"&gt;&#xD;
BinaryReader.ReadBytes: &lt;/span&gt;&lt;span style="color: #800080;"&gt;131&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;072&lt;/span&gt;&lt;span style="color: #000000;"&gt;&#xD;
       TextReader.Read:   &lt;/span&gt;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;904&lt;/span&gt;&lt;span style="color: #000000;"&gt;&#xD;
  TextReader.ReadBlock: &lt;/span&gt;&lt;span style="color: #800080;"&gt;131&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;072&lt;/span&gt;&lt;span style="color: #000000;"&gt;&#xD;
&#xD;
                Expect: &lt;/span&gt;&lt;span style="color: #800080;"&gt;131&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;072&lt;/span&gt;&lt;span style="color: #000000;"&gt;&#xD;
           Stream.Read:   &lt;/span&gt;&lt;span style="color: #800080;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;356&lt;/span&gt;&lt;span style="color: #000000;"&gt;&#xD;
      Stream.ReadBytes: &lt;/span&gt;&lt;span style="color: #800080;"&gt;131&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;072&lt;/span&gt;&lt;span style="color: #000000;"&gt;&#xD;
     BinaryReader.Read:   &lt;/span&gt;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;904&lt;/span&gt;&lt;span style="color: #000000;"&gt;&#xD;
BinaryReader.ReadBytes: &lt;/span&gt;&lt;span style="color: #800080;"&gt;131&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;072&lt;/span&gt;&lt;span style="color: #000000;"&gt;&#xD;
       TextReader.Read:   &lt;/span&gt;&lt;span style="color: #800080;"&gt;5&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;808&lt;/span&gt;&lt;span style="color: #000000;"&gt;&#xD;
  TextReader.ReadBlock: &lt;/span&gt;&lt;span style="color: #800080;"&gt;131&lt;/span&gt;&lt;span style="color: #000000;"&gt;,&lt;/span&gt;&lt;span style="color: #800080;"&gt;072&lt;/span&gt;&lt;span style="color: #000000;"&gt;&#xD;
&lt;/span&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&#xD;
&lt;p&gt;可见，Stream.Read()、BinaryReader.Read()和TextReader.Read()方法，在尚未到达流的末尾情况下，获取到的字节数仍可以能少于所请求的字节数，这种问题在处理网络流（如FTP）、设备流（如串口输入）等情况时经常发生，而Stream.ReadBytes()、BinaryReader.ReadBytes()、和TextReader.ReadBlock()方法则无此问题。 &#xD;
&lt;p&gt;现在，我们通过 &lt;a href="http://www.red-gate.com/products/reflector/"&gt;Reflector&lt;/a&gt; 来查看BinaryReader.Read()方法的源程序代码。 &#xD;
&lt;p&gt;&lt;pre &gt;public virtual int Read(byte[] buffer, int index, int count)&#xD;
{&#xD;
  if (buffer == null)&#xD;
  {&#xD;
    throw new ArgumentNullException("buffer", Environment.GetResourceString("ArgumentNull_Buffer"));&#xD;
  }&#xD;
  if (index &amp;lt; 0)&#xD;
  {&#xD;
    throw new ArgumentOutOfRangeException("index", Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegNum"));&#xD;
  }&#xD;
  if (count &amp;lt; 0)&#xD;
  {&#xD;
    throw new ArgumentOutOfRangeException("count", Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegNum"));&#xD;
  }&#xD;
  if ((buffer.Length - index) &amp;lt; count)&#xD;
  {&#xD;
throw new ArgumentException(Environment.GetResourceString(&#xD;
"Argument_InvalidOffLen"));&#xD;
  }&#xD;
  if (this.m_stream == null)&#xD;
  {&#xD;
    __Error.FileNotOpen();&#xD;
  }&#xD;
  return this.m_stream.Read(buffer, index, count);&#xD;
}&#xD;
&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&#xD;
&lt;p&gt;======&lt;/p&gt;&#xD;
&lt;p&gt;最后一行的m_stream的类型为 Stream，可见，BinaryReader.Read()方法在做一些必要的检查后就是简单地调用Stream.Read()方法，所以它们具有相同的问题。 &#xD;
&lt;p&gt;而 BinaryReader.ReadBytes方法的源程序代码如下： &#xD;
&lt;p&gt;&lt;pre &gt;public virtual byte[] ReadBytes(int count)&#xD;
{&#xD;
  if (count &amp;lt; 0)&#xD;
  {&#xD;
    throw new ArgumentOutOfRangeException("count", Environment. GetResourceString("ArgumentOutOfRange_NeedNonNegNum"));&#xD;
  }&#xD;
  if (this.m_stream == null)&#xD;
  {&#xD;
     __Error.FileNotOpen();&#xD;
  }&#xD;
  byte[] buffer = new byte[count];&#xD;
  int offset = 0;&#xD;
  do&#xD;
  {&#xD;
    int num2 = this.m_stream.Read(buffer, offset, count);&#xD;
    if (num2 == 0)&#xD;
    {&#xD;
      break;&#xD;
    }&#xD;
    offset += num2;&#xD;
    count -= num2;&#xD;
  }&#xD;
  while (count &amp;gt; 0);&#xD;
  if (offset != buffer.Length)&#xD;
  {&#xD;
    byte[] dst = new byte[offset];&#xD;
    Buffer.InternalBlockCopy(buffer, 0, dst, 0, offset);&#xD;
    buffer = dst;&#xD;
  }&#xD;
  return buffer;&#xD;
}&#xD;
&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&#xD;
&lt;p&gt;======&lt;/p&gt;&#xD;
&lt;p&gt;&lt;p&gt;从上述代码中可以看出，BinaryReader.ReadBytes 方法循环地调用 Stream.Read 方法，直到达到流的末尾，或者已经读取了请求的 个字节为止。也就是说，如果没有到达流的末尾，该方法就一定会返回所请求的字节。 &#xD;
&lt;p&gt;Stream.ReadBytes()方法其实是我写的一个扩展方法，源程序代码如下：&lt;pre &gt;using System;&#xD;
using System.IO;&#xD;
&#xD;
namespace Skyiv.Util&#xD;
{&#xD;
  static class ExtensionMethods&#xD;
  {&#xD;
    public static byte[] ReadBytes(this Stream stream, int count)&#xD;
    {&#xD;
      if(count &amp;lt; 0) throw new ArgumentOutOfRangeException("count","??????????");&#xD;
      var bs = new byte[count];&#xD;
      var offset = 0;&#xD;
      for (int n = -1; n != 0 &amp;amp;&amp;amp; count &amp;gt; 0; count -= n, offset += n)&#xD;
 n = stream.Read(bs, offset, count);&#xD;
      if (offset != bs.Length) Array.Resize(ref bs, offset);&#xD;
      return bs;&#xD;
    }&#xD;
  }&#xD;
}&#xD;
&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&#xD;
&lt;p&gt;======&lt;/p&gt;&#xD;
&lt;p&gt;测试程序中使用的 FtpClient 类是我编写的类，可以参见我的另一篇随笔“如何直接处理FTP服务器上的压缩文件”&lt;a href="#_ftn1_8029" name="_ftnref1_8029"&gt;[①]&lt;/a&gt;，其源程序代码如下：&lt;pre &gt;using System;&#xD;
using System.IO;&#xD;
using System.Net;&#xD;
namespace Skyiv.Util&#xD;
{&#xD;
  sealed class FtpClient&#xD;
  {&#xD;
    Uri uri;&#xD;
    string userName;&#xD;
    string password;&#xD;
&#xD;
    public FtpClient(string uri, string userName, string password)&#xD;
    {&#xD;
      this.uri = new Uri(uri);&#xD;
      this.userName = userName;&#xD;
      this.password = password;&#xD;
    }&#xD;
&#xD;
    public Stream GetDownloadStream(string sourceFile)&#xD;
    {&#xD;
      Uri downloadUri = new Uri(uri, sourceFile);&#xD;
      if (downloadUri.Scheme != Uri.UriSchemeFtp)&#xD;
 throw new ArgumentException("URI is not an FTP site");&#xD;
      FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(downloadUri);&#xD;
      ftpRequest.Credentials = new NetworkCredential(userName, password);&#xD;
      ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile;&#xD;
      return ((FtpWebResponse)ftpRequest.GetResponse()).GetResponseStream();&#xD;
    }&#xD;
  }&#xD;
}&#xD;
&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&#xD;
&lt;p&gt;======&lt;/p&gt;&#xD;
&lt;p&gt;&lt;hr align="left" size="1" width="33%"&gt;&#xD;
&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="#_ftnref1_8029" name="_ftn1_8029"&gt;[①]&lt;/a&gt; 地址为：http://www.cnblogs.com/skyivben/archive/2005/09/17/238920.html &#xD;
&lt;h1 align="center"&gt;&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/BeginnerClassroom/aggbug/1797291.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/BeginnerClassroom/archive/2010/08/11/1797291.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
