<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Qihangnet's Blog! - CSharp</title>
    <link>http://www.qihangnet.com/</link>
    <description>——DotNet技术研究</description>
    <language>zh-cn</language>
    <copyright>衣明志</copyright>
    <lastBuildDate>Wed, 09 Jun 2010 09:08:58 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>qihangnet@hotmail.com</managingEditor>
    <webMaster>qihangnet@hotmail.com</webMaster>
    <item>
      <trackback:ping>http://www.qihangnet.com/Trackback.aspx?guid=5a1ac358-b3cc-43ba-825d-9382f3050dad</trackback:ping>
      <pingback:server>http://www.qihangnet.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.qihangnet.com/PermaLink,guid,5a1ac358-b3cc-43ba-825d-9382f3050dad.aspx</pingback:target>
      <dc:creator>衣明志</dc:creator>
      <wfw:comment>http://www.qihangnet.com/CommentView,guid,5a1ac358-b3cc-43ba-825d-9382f3050dad.aspx</wfw:comment>
      <wfw:commentRss>http://www.qihangnet.com/SyndicationService.asmx/GetEntryCommentsRss?guid=5a1ac358-b3cc-43ba-825d-9382f3050dad</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
在ASP.NET MVC 2中发生一些变化，当在一个Action中设置了某TempData的值，在读取它之前，它将一直存在，
</p>
        <p>
        </p>
        <ul>
          <li>
            <font color="#ff0000">在同一个 HTTP Request 内可以读取多次，该次 Request 结束的时候会执行销毁动作</font>
          </li>
          <li>
            <font class="Apple-style-span" color="#FF0000">
              <b>但，返回类型为</b>
            </font>
            <span class="Apple-style-span" style="color: rgb(255, 0, 0); ">
              <b>RedirectResult
或 RedirectToRouteResult MVC会执行Keep() ,保留 TempData 到下一页<br /></b>
            </span>
          </li>
        </ul>
这比较适合两个Action之间传值。当然了，在一个页面中读取时允许多次读取，也就是在ViewPage中可以多次读取TempData，但下个页面对不起将无法读取，因为已经自毁了，呵呵。
<p><font color="#006400">谢谢<a href="http://blog.miniasp.com/" target="_blank">Will</a>的纠正，已经对内容进行了更新:) </font></p><p><font color="#006400"></font><span class="Apple-style-span" style="color: rgb(0, 100, 0); "><a href="http://blog.miniasp.com/" target="_blank">Will</a> 的严谨精神值得赞赏和学习。</span></p><br /><hr />
This weblog is sponsored by <a href="http://www.qihangnet.com">Qihangnet</a>. 
</body>
      <title>ASP.NET MVC 2 中TempData的生命周期</title>
      <guid isPermaLink="false">http://www.qihangnet.com/PermaLink,guid,5a1ac358-b3cc-43ba-825d-9382f3050dad.aspx</guid>
      <link>http://www.qihangnet.com/PermaLink,guid,5a1ac358-b3cc-43ba-825d-9382f3050dad.aspx</link>
      <pubDate>Wed, 09 Jun 2010 09:08:58 GMT</pubDate>
      <description>&lt;p&gt;
在ASP.NET MVC 2中发生一些变化，当在一个Action中设置了某TempData的值，在读取它之前，它将一直存在，
&lt;/p&gt;
&lt;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;font color="#ff0000"&gt;在同一个 HTTP Request 内可以读取多次，该次 Request 结束的时候会执行销毁动作&lt;/font&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;font class="Apple-style-span" color="#FF0000"&gt;&lt;b&gt;但，返回类型为&lt;/b&gt;&lt;/font&gt;&lt;span class="Apple-style-span" style="color: rgb(255, 0, 0); "&gt;&lt;b&gt;RedirectResult
或 RedirectToRouteResult MVC会执行Keep() ,保留 TempData 到下一页&lt;br&gt;
&lt;/b&gt;&lt;/span&gt;
&lt;/li&gt;
&lt;/ul&gt;
这比较适合两个Action之间传值。当然了，在一个页面中读取时允许多次读取，也就是在ViewPage中可以多次读取TempData，但下个页面对不起将无法读取，因为已经自毁了，呵呵。&gt;
&lt;p&gt;
&lt;font color="#006400"&gt;谢谢&lt;a href="http://blog.miniasp.com/" target="_blank"&gt;Will&lt;/a&gt;的纠正，已经对内容进行了更新:)&amp;nbsp;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font color="#006400"&gt;&lt;/font&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 100, 0); "&gt;&lt;a href="http://blog.miniasp.com/" target="_blank"&gt;Will&lt;/a&gt;&amp;nbsp;的严谨精神值得赞赏和学习。&lt;/span&gt;
&lt;/p&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.qihangnet.com"&gt;Qihangnet&lt;/a&gt;. </description>
      <comments>http://www.qihangnet.com/CommentView,guid,5a1ac358-b3cc-43ba-825d-9382f3050dad.aspx</comments>
      <category>ASP.NET MVC</category>
      <category>CSharp</category>
      <category>技术咨询</category>
    </item>
    <item>
      <trackback:ping>http://www.qihangnet.com/Trackback.aspx?guid=2ad42747-a86c-449e-9760-8278f8e79c13</trackback:ping>
      <pingback:server>http://www.qihangnet.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.qihangnet.com/PermaLink,guid,2ad42747-a86c-449e-9760-8278f8e79c13.aspx</pingback:target>
      <dc:creator>衣明志</dc:creator>
      <wfw:comment>http://www.qihangnet.com/CommentView,guid,2ad42747-a86c-449e-9760-8278f8e79c13.aspx</wfw:comment>
      <wfw:commentRss>http://www.qihangnet.com/SyndicationService.asmx/GetEntryCommentsRss?guid=2ad42747-a86c-449e-9760-8278f8e79c13</wfw:commentRss>
      <title>我近期讲过的vs2010有关的webcast列表整理</title>
      <guid isPermaLink="false">http://www.qihangnet.com/PermaLink,guid,2ad42747-a86c-449e-9760-8278f8e79c13.aspx</guid>
      <link>http://www.qihangnet.com/PermaLink,guid,2ad42747-a86c-449e-9760-8278f8e79c13.aspx</link>
      <pubDate>Mon, 10 May 2010 20:37:00 GMT</pubDate>
      <description>&lt;p&gt;
&lt;img style="display: inline; margin-left: 0px; margin-right: 0px" align="right" src="http://www.microsoft.com/visualstudio/_base_v1/images/boxshots/hero_boxshot_why.png"&gt;
&lt;/p&gt;
&lt;p&gt;
Visual Studio 2010于今年的4月12日正式发布，而且还是在中国北京进行的全球首发，盛况空前，且令人感动。
&lt;/p&gt;
&lt;p&gt;
&lt;img border="0" src="http://www.e-service.net.cn/EDM/Visual_Studio_2010/20100427/images/images_17.jpg" width="666" height="343"&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.microsoft.com/china/visualstudio/2010launch/love.aspx"&gt;程序员“耀@爱情”系列情景剧&lt;/a&gt; 也真实表现出了程序员们的爱情现状，值得深思，我们到底该如何平衡生活与工作呢？
&lt;/p&gt;
&lt;p&gt;
ok，言归正传。我个人在4月份一整月基本都是在讲VS2010的有关课程，其中有线上的webcast和线下的面对面培训，还有一些小组讨论会之类的事情。忙得身体有点透支的感觉，不过当听到不少程序员在下载观看我的课程视频，心里还是很欣慰的，本月暂时只讲了一堂webcast，做一下休息和思想的沉淀，希望以后给大家带来更多的精彩内容。下面我整理一下近期讲过的与Visual
Studio 2010有关的视频课程列表。
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
ASP.NET 4 风云之旅系列课程: 
&lt;ol&gt;
&lt;li&gt;
Visual Studio 2010在Web开发方面的新特性: &lt;a title="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032441081&amp;amp;amp;Culture=zh-CN" href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032441081&amp;amp;amp;Culture=zh-CN"&gt;http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032441081&amp;amp;amp;Culture=zh-CN&lt;/a&gt; 
&lt;li&gt;
ASP.NET MVC 2 的新特性:&lt;a title="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032441085&amp;amp;amp;Culture=zh-CN" href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032441085&amp;amp;amp;Culture=zh-CN"&gt;http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032441085&amp;amp;amp;Culture=zh-CN&lt;/a&gt; 
&lt;li&gt;
ASP.NET 4 对开发人员的核心运行时新特性:&lt;a title="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032444981&amp;amp;amp;Culture=zh-CN" href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032444981&amp;amp;amp;Culture=zh-CN"&gt;http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032444981&amp;amp;amp;Culture=zh-CN&lt;/a&gt; 
&lt;li&gt;
ASP.NET 4 WebForms的新特性: &lt;a title="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032444991&amp;amp;amp;Culture=zh-CN" href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032444991&amp;amp;amp;Culture=zh-CN"&gt;http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032444991&amp;amp;amp;Culture=zh-CN&lt;/a&gt; 
&lt;li&gt;
新版ASP.NET Ajax Library: &lt;a title="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032448161&amp;amp;amp;Culture=zh-CN" href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032448161&amp;amp;amp;Culture=zh-CN"&gt;http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032448161&amp;amp;amp;Culture=zh-CN&lt;/a&gt; 
&lt;li&gt;
很Dynamic的ASP.NET 4: &lt;a title="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032448165&amp;amp;amp;Culture=zh-CN" href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032448165&amp;amp;amp;Culture=zh-CN"&gt;http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032448165&amp;amp;amp;Culture=zh-CN&lt;/a&gt; 
&lt;li&gt;
ASP.NET 4 突破变更点(Breaking Changes) : &lt;a title="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032451491&amp;amp;amp;Culture=zh-CN" href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032451491&amp;amp;amp;Culture=zh-CN"&gt;http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032451491&amp;amp;amp;Culture=zh-CN&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
Visual Studio 2010 代码探索系列课程: 
&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;
Foundation Server 2010 初探: &lt;a title="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032448910&amp;amp;Culture=zh-CN " href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032448910&amp;amp;Culture=zh-CN&amp;nbsp;"&gt;http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032448910&amp;amp;Culture=zh-CN &lt;/a&gt; 【&lt;a href="http://download.microsoft.com/download/9/C/7/9C7A8CF8-F860-4DF1-877C-82A501CA2954/WebCast20100410am_Video.zip"&gt;视频&lt;/a&gt;】【&lt;a href="http://download.microsoft.com/download/9/C/7/9C7A8CF8-F860-4DF1-877C-82A501CA2954/WebCast20100410am_PDF.zip"&gt;PPT&lt;/a&gt;】 
&lt;li&gt;
数据驱动的Coded UI Test: &lt;a title="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032448911&amp;amp;Culture=zh-CN" href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032448911&amp;amp;Culture=zh-CN"&gt;http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032448911&amp;amp;Culture=zh-CN&lt;/a&gt; 【&lt;a href="http://download.microsoft.com/download/9/C/7/9C7A8CF8-F860-4DF1-877C-82A501CA2954/WebCast20100410pm_Video.zip"&gt;视频&lt;/a&gt;】【&lt;a href="http://download.microsoft.com/download/9/C/7/9C7A8CF8-F860-4DF1-877C-82A501CA2954/WebCast20100410pm_PDF.zip"&gt;PPT&lt;/a&gt;】【&lt;a href="http://download.microsoft.com/download/9/C/7/9C7A8CF8-F860-4DF1-877C-82A501CA2954/WebCast20100410pm_Demo.zip"&gt;Demo&lt;/a&gt;】 
&lt;li&gt;
Visual Studio 2010的高可扩展能力: &lt;a title="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032448912&amp;amp;Culture=zh-CN" href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032448912&amp;amp;Culture=zh-CN"&gt;http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032448912&amp;amp;Culture=zh-CN&lt;/a&gt; 【&lt;a href="http://download.microsoft.com/download/9/C/7/9C7A8CF8-F860-4DF1-877C-82A501CA2954/WebCast20100411am_Video.zip"&gt;视频&lt;/a&gt;】【&lt;a href="http://download.microsoft.com/download/9/C/7/9C7A8CF8-F860-4DF1-877C-82A501CA2954/WebCast20100411am_PDF.zip"&gt;PPT&lt;/a&gt;】【&lt;a href="http://download.microsoft.com/download/9/C/7/9C7A8CF8-F860-4DF1-877C-82A501CA2954/WebCast20100411am_Demo.zip"&gt;Demo&lt;/a&gt;】 
&lt;li&gt;
重构的技巧和经验: &lt;a title="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032448913&amp;amp;Culture=zh-CN" href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032448913&amp;amp;Culture=zh-CN"&gt;http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032448913&amp;amp;Culture=zh-CN&lt;/a&gt; 【&lt;a href="http://download.microsoft.com/download/9/C/7/9C7A8CF8-F860-4DF1-877C-82A501CA2954/WebCast20100411pm_Video.zip"&gt;视频&lt;/a&gt;】【&lt;a href="http://download.microsoft.com/download/9/C/7/9C7A8CF8-F860-4DF1-877C-82A501CA2954/WebCast20100411pm_PDF.zip"&gt;PPT&lt;/a&gt;】【&lt;a href="http://download.microsoft.com/download/9/C/7/9C7A8CF8-F860-4DF1-877C-82A501CA2954/WebCast20100411pm_Demo.zip"&gt;Demo&lt;/a&gt;】 
&lt;li&gt;
自定义Visual Studio IDE: &lt;a title="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032448914&amp;amp;Culture=zh-CN" href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032448914&amp;amp;Culture=zh-CN"&gt;http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032448914&amp;amp;Culture=zh-CN&lt;/a&gt; 【&lt;a href="http://download.microsoft.com/download/9/C/7/9C7A8CF8-F860-4DF1-877C-82A501CA2954/WebCast20100413am_Video.zip"&gt;视频&lt;/a&gt;】【&lt;a href="http://download.microsoft.com/download/9/C/7/9C7A8CF8-F860-4DF1-877C-82A501CA2954/WebCast20100413am_PDF.zip"&gt;PPT&lt;/a&gt;】 
&lt;li&gt;
微软Web部署工具: &lt;a title="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032448915&amp;amp;Culture=zh-CN" href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032448915&amp;amp;Culture=zh-CN"&gt;http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032448915&amp;amp;Culture=zh-CN&lt;/a&gt; 【&lt;a href="http://download.microsoft.com/download/9/C/7/9C7A8CF8-F860-4DF1-877C-82A501CA2954/WebCast20100413pm_Video.zip"&gt;视频&lt;/a&gt;】【&lt;a href="http://download.microsoft.com/download/9/C/7/9C7A8CF8-F860-4DF1-877C-82A501CA2954/WebCast20100413pm_PDF.zip"&gt;PPT&lt;/a&gt;】【&lt;a href="http://download.microsoft.com/download/9/C/7/9C7A8CF8-F860-4DF1-877C-82A501CA2954/WebCast20100413pm_Demo.zip"&gt;Demo&lt;/a&gt;】 
&lt;li&gt;
使用VS2010架构师工具分析代码: &lt;a title="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032448916&amp;amp;Culture=zh-CN" href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032448916&amp;amp;Culture=zh-CN"&gt;http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032448916&amp;amp;Culture=zh-CN&lt;/a&gt; 【&lt;a href="http://download.microsoft.com/download/9/C/7/9C7A8CF8-F860-4DF1-877C-82A501CA2954/WebCast20100414am_Video.zip"&gt;视频&lt;/a&gt;】【&lt;a href="http://download.microsoft.com/download/9/C/7/9C7A8CF8-F860-4DF1-877C-82A501CA2954/WebCast20100414am_PDF.zip"&gt;PPT&lt;/a&gt;】&lt;/li&gt;
&lt;/ol&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;font color="#ff0000"&gt;【注：Visual Studio 2010 代码探索系列课程的内容都是本地高清录制的，视频文件较大】&lt;/font&gt;
&lt;/p&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.qihangnet.com"&gt;Qihangnet&lt;/a&gt;. </description>
      <comments>http://www.qihangnet.com/CommentView,guid,2ad42747-a86c-449e-9760-8278f8e79c13.aspx</comments>
      <category>ASP.NET</category>
      <category>ASP.NET MVC</category>
      <category>CSharp</category>
      <category>DOWNLOAD</category>
      <category>JAVASCRIPT</category>
      <category>MVP</category>
      <category>Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://www.qihangnet.com/Trackback.aspx?guid=f78b944a-600d-4d2f-9bab-822dd964f2b3</trackback:ping>
      <pingback:server>http://www.qihangnet.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.qihangnet.com/PermaLink,guid,f78b944a-600d-4d2f-9bab-822dd964f2b3.aspx</pingback:target>
      <dc:creator>衣明志</dc:creator>
      <wfw:comment>http://www.qihangnet.com/CommentView,guid,f78b944a-600d-4d2f-9bab-822dd964f2b3.aspx</wfw:comment>
      <wfw:commentRss>http://www.qihangnet.com/SyndicationService.asmx/GetEntryCommentsRss?guid=f78b944a-600d-4d2f-9bab-822dd964f2b3</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
    很荣幸在Tech.ED2008北京场的社区技术专场中，本人讲了一场《<a href="http://www.microsoft.com/#cs281">如何成倍提升企业级Web应用开发效率</a>》的课程。这次讲座是第一次在Tech.ED场合讲座，不过作为非正式课程，我很高兴的看到不少人放弃了正式课程的内容来听社区技术专场的内容。也许是这类课程更贴近大家的工作吧，形式也不拘泥，大家可以面对面地探讨，气氛比较好。不过我的课程时间把握的不是太好，造成了后期给大家讲解的内容有点仓促，不是很细，希望参会的朋友们原谅。讲课过程中，发现听课的人逐渐增多，而且似乎开始就过来听的朋友们都没有中途离场的，这对我是莫大的鼓舞。我将努力在以后的日子给大家带来一些更好的内容，敬请关注哦:D
</p>
        <p>
     在这里为大家提供本次课程的<a target="_blank" href="http://www.qihangnet.com/content/binary/teched2008_CS281.pdf">课件</a>和<a target="_blank" href="http://www.qihangnet.com/content/binary/teched2008_demo.zip">Demo</a>文件下载，希望对大家能有所启发和帮助，如果能真正使得大家在企业级WEB应用开发过程中提高了不少效率，将是莫大的欣慰和荣誉。
</p>
        <br />
        <hr />
This weblog is sponsored by <a href="http://www.qihangnet.com">Qihangnet</a>. 
</body>
      <title>我在TechEd2008社区技术专场的课程资料</title>
      <guid isPermaLink="false">http://www.qihangnet.com/PermaLink,guid,f78b944a-600d-4d2f-9bab-822dd964f2b3.aspx</guid>
      <link>http://www.qihangnet.com/PermaLink,guid,f78b944a-600d-4d2f-9bab-822dd964f2b3.aspx</link>
      <pubDate>Tue, 11 Nov 2008 17:29:00 GMT</pubDate>
      <description>&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 很荣幸在Tech.ED2008北京场的社区技术专场中，本人讲了一场《&lt;a href="http://www.microsoft.com/#cs281"&gt;如何成倍提升企业级Web应用开发效率&lt;/a&gt;》的课程。这次讲座是第一次在Tech.ED场合讲座，不过作为非正式课程，我很高兴的看到不少人放弃了正式课程的内容来听社区技术专场的内容。也许是这类课程更贴近大家的工作吧，形式也不拘泥，大家可以面对面地探讨，气氛比较好。不过我的课程时间把握的不是太好，造成了后期给大家讲解的内容有点仓促，不是很细，希望参会的朋友们原谅。讲课过程中，发现听课的人逐渐增多，而且似乎开始就过来听的朋友们都没有中途离场的，这对我是莫大的鼓舞。我将努力在以后的日子给大家带来一些更好的内容，敬请关注哦:D
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在这里为大家提供本次课程的&lt;a target="_blank" href="http://www.qihangnet.com/content/binary/teched2008_CS281.pdf"&gt;课件&lt;/a&gt;和&lt;a target="_blank" href="http://www.qihangnet.com/content/binary/teched2008_demo.zip"&gt;Demo&lt;/a&gt;文件下载，希望对大家能有所启发和帮助，如果能真正使得大家在企业级WEB应用开发过程中提高了不少效率，将是莫大的欣慰和荣誉。
&lt;/p&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.qihangnet.com"&gt;Qihangnet&lt;/a&gt;. </description>
      <comments>http://www.qihangnet.com/CommentView,guid,f78b944a-600d-4d2f-9bab-822dd964f2b3.aspx</comments>
      <category>ASP.NET</category>
      <category>CSharp</category>
      <category>DOWNLOAD</category>
      <category>Visual Studio</category>
    </item>
    <item>
      <trackback:ping>http://www.qihangnet.com/Trackback.aspx?guid=5be5c76e-ded4-4454-b7a0-0aa58ce8f6f5</trackback:ping>
      <pingback:server>http://www.qihangnet.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.qihangnet.com/PermaLink,guid,5be5c76e-ded4-4454-b7a0-0aa58ce8f6f5.aspx</pingback:target>
      <dc:creator>衣明志</dc:creator>
      <wfw:comment>http://www.qihangnet.com/CommentView,guid,5be5c76e-ded4-4454-b7a0-0aa58ce8f6f5.aspx</wfw:comment>
      <wfw:commentRss>http://www.qihangnet.com/SyndicationService.asmx/GetEntryCommentsRss?guid=5be5c76e-ded4-4454-b7a0-0aa58ce8f6f5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
最近给一些技术公司进行asp.net开发方向的培训，培训过程中曾发现一些简单的问题却几乎全军覆没的答错，而其中不乏一些曾在多年使用C#进行过项目开发的技术人员。比如说，我曾经出过一个题让参加培训的人员回答：int
a=13/2的结果。技术人员的答案有以下几种情况
</p>
        <ul>
          <li>
代码错误，因为13/2的值不是整形 
</li>
          <li>
7 
</li>
          <li>
6 
</li>
          <li>
1</li>
        </ul>
        <p>
那么我们知道，VS2008中写成 “var a=13/2” 的形式，如果我们将题目写成如此。那么大概更多的人会写成是答案为6.5了。原因是什么呢？原因是很多C#程序员对基本语法并不完全熟悉，想当然的认为一些运算的规则是如何如何。作为程序员，我想我们应该对自己严格要求才好，不然如果上面的运算是一笔资金，那么0.5的误差后面单位可能是百万或者亿，损失可就大了。
</p>
        <p>
那么我们来看看msdn中如何描述“/”运算符的：
</p>
        <p>
          <em>两个整数相除的结果始终为一个整数。例如，5 除以 2 的结果为 2。若要确定 5 除以 2 的余数，请使用 modulo 运算符 (%)。若要获取作为有理数或分数的商，应将被除数或除数设置为
float 类型或 double 类型。可以通过在数字后添加一个小数点来隐式执行此操作</em>
        </p>
        <p>
由上面这段msdn对除法运算符的描述，我们知道题目的答案应该是6。那么我们如何才能得到6.5的值呢，方法大概如下
</p>
        <ul>
          <li>
var a=13/2.0</li>
          <li>
var a=13.0/2</li>
          <li>
var a=13f/2</li>
          <li>
var a=13d/2</li>
          <li>
var a=13/2f</li>
          <li>
var a=13/2d</li>
          <li>
……</li>
        </ul>
        <p>
上面几种方式，思路一致，就是让运算式中一个值为有理数类型，f和d都是字面值表示前面的数字为float类型和double类型的。当然了用m也可以啦，因为m表示decimal类型。
</p>
        <br />
        <hr />
This weblog is sponsored by <a href="http://www.qihangnet.com">Qihangnet</a>. 
</body>
      <title>int a=13/2引起的思索</title>
      <guid isPermaLink="false">http://www.qihangnet.com/PermaLink,guid,5be5c76e-ded4-4454-b7a0-0aa58ce8f6f5.aspx</guid>
      <link>http://www.qihangnet.com/PermaLink,guid,5be5c76e-ded4-4454-b7a0-0aa58ce8f6f5.aspx</link>
      <pubDate>Sun, 25 May 2008 06:38:00 GMT</pubDate>
      <description>&lt;p&gt;
最近给一些技术公司进行asp.net开发方向的培训，培训过程中曾发现一些简单的问题却几乎全军覆没的答错，而其中不乏一些曾在多年使用C#进行过项目开发的技术人员。比如说，我曾经出过一个题让参加培训的人员回答：int
a=13/2的结果。技术人员的答案有以下几种情况
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
代码错误，因为13/2的值不是整形 
&lt;li&gt;
7 
&lt;li&gt;
6 
&lt;li&gt;
1&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
那么我们知道，VS2008中写成 “var a=13/2” 的形式，如果我们将题目写成如此。那么大概更多的人会写成是答案为6.5了。原因是什么呢？原因是很多C#程序员对基本语法并不完全熟悉，想当然的认为一些运算的规则是如何如何。作为程序员，我想我们应该对自己严格要求才好，不然如果上面的运算是一笔资金，那么0.5的误差后面单位可能是百万或者亿，损失可就大了。
&lt;/p&gt;
&lt;p&gt;
那么我们来看看msdn中如何描述“/”运算符的：
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;两个整数相除的结果始终为一个整数。例如，5 除以 2 的结果为 2。若要确定 5 除以 2 的余数，请使用 modulo 运算符 (%)。若要获取作为有理数或分数的商，应将被除数或除数设置为
float 类型或 double 类型。可以通过在数字后添加一个小数点来隐式执行此操作&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
由上面这段msdn对除法运算符的描述，我们知道题目的答案应该是6。那么我们如何才能得到6.5的值呢，方法大概如下
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
var a=13/2.0&lt;/li&gt;
&lt;li&gt;
var a=13.0/2&lt;/li&gt;
&lt;li&gt;
var a=13f/2&lt;/li&gt;
&lt;li&gt;
var a=13d/2&lt;/li&gt;
&lt;li&gt;
var a=13/2f&lt;/li&gt;
&lt;li&gt;
var a=13/2d&lt;/li&gt;
&lt;li&gt;
……&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
上面几种方式，思路一致，就是让运算式中一个值为有理数类型，f和d都是字面值表示前面的数字为float类型和double类型的。当然了用m也可以啦，因为m表示decimal类型。
&lt;/p&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.qihangnet.com"&gt;Qihangnet&lt;/a&gt;. </description>
      <comments>http://www.qihangnet.com/CommentView,guid,5be5c76e-ded4-4454-b7a0-0aa58ce8f6f5.aspx</comments>
      <category>CSharp</category>
    </item>
    <item>
      <trackback:ping>http://www.qihangnet.com/Trackback.aspx?guid=2f077857-f03e-402b-9f6e-8c95a9e98b95</trackback:ping>
      <pingback:server>http://www.qihangnet.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.qihangnet.com/PermaLink,guid,2f077857-f03e-402b-9f6e-8c95a9e98b95.aspx</pingback:target>
      <dc:creator>衣明志</dc:creator>
      <wfw:comment>http://www.qihangnet.com/CommentView,guid,2f077857-f03e-402b-9f6e-8c95a9e98b95.aspx</wfw:comment>
      <wfw:commentRss>http://www.qihangnet.com/SyndicationService.asmx/GetEntryCommentsRss?guid=2f077857-f03e-402b-9f6e-8c95a9e98b95</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
在C#中有个较为重要，而常被一些人忽视的符号——问号（?）。在这里整理一下它在C#的几种情况：
</p>
        <ol>
          <li>
            <strong>可空类型修饰符“T?”：</strong>可空类型的基础类型可以是任何非可空值类型或任何具有struct约束的类型参数，但不能是可空类型或引用类型。例如：int?代表是可空的整形，而int??则是无效类型。即可空类型可以表示其基础类型的所有值和一个额外的空值。语法T?是System.Nullable&lt;T&gt;的缩写形式。可空类型具有一个HasValue的bool类型只读属性，当可空类型实例的该属性为true时，则表示该实例是非空实例，包含一个已知值Value;HasValue为false时，访问Value属性将导致System.InvalidOperationException。可空类型T?具有一个类型为T的单个参数的公共构造函数，如new
int?(123)将获得一个值为123的int?类型实例。从T?到由T实现的任何接口都存在装箱转换，并且从由T实现的任何接口都存在到T?的拆箱转换。但是<font color="#ff0000">任何情况下可空类型都不满足接口约束，即使基础类型实现了该特定接口</font>。 
</li>
          <li>
            <strong>条件运算符“x ? y : z”</strong> ： “x ? y : z”的意思大部分程序员应该都熟悉，稍微啰嗦一下:) 如果表达式x为true，则计算y；如果x为false，则计算z。省却if{}else{}的简单形式了。 
</li>
          <li>
            <strong>空合并运算符“??”：</strong>该运算符是在泛型出现后，C#词法语法中新增加的标记，同时出现的还有一个“::”（命名空间别名限定符）。<font color="#ff0000">形式为“a??b”的空合并表达式要求a为可空类型或引用类型</font>。如果a为非空则表达式“a??b”返回的结果为a；否则返回b。<font color="#ff0000">空合并运算符为<strong>右</strong>结合运算符</font>，即操作时从右向左进行组合的。如，“a??b??c”的形式按“a??(bb??cc)”计算。</li>
        </ol>
        <p>
曾有人说过“细节决定胜负”，我们程序员应该更好的把握编程语言的细节才能更好的保证软件质量。
</p>
        <p>
特此整理存档:D
</p>
        <br />
        <hr />
This weblog is sponsored by <a href="http://www.qihangnet.com">Qihangnet</a>. 
</body>
      <title>C#中的问号</title>
      <guid isPermaLink="false">http://www.qihangnet.com/PermaLink,guid,2f077857-f03e-402b-9f6e-8c95a9e98b95.aspx</guid>
      <link>http://www.qihangnet.com/PermaLink,guid,2f077857-f03e-402b-9f6e-8c95a9e98b95.aspx</link>
      <pubDate>Thu, 31 Jan 2008 08:31:34 GMT</pubDate>
      <description>&lt;p&gt;
在C#中有个较为重要，而常被一些人忽视的符号——问号（?）。在这里整理一下它在C#的几种情况：
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;可空类型修饰符“T?”：&lt;/strong&gt;可空类型的基础类型可以是任何非可空值类型或任何具有struct约束的类型参数，但不能是可空类型或引用类型。例如：int?代表是可空的整形，而int??则是无效类型。即可空类型可以表示其基础类型的所有值和一个额外的空值。语法T?是System.Nullable&amp;lt;T&amp;gt;的缩写形式。可空类型具有一个HasValue的bool类型只读属性，当可空类型实例的该属性为true时，则表示该实例是非空实例，包含一个已知值Value;HasValue为false时，访问Value属性将导致System.InvalidOperationException。可空类型T?具有一个类型为T的单个参数的公共构造函数，如new
int?(123)将获得一个值为123的int?类型实例。从T?到由T实现的任何接口都存在装箱转换，并且从由T实现的任何接口都存在到T?的拆箱转换。但是&lt;font color=#ff0000&gt;任何情况下可空类型都不满足接口约束，即使基础类型实现了该特定接口&lt;/font&gt;。 
&lt;li&gt;
&lt;strong&gt;条件运算符“x ? y : z”&lt;/strong&gt; ： “x ? y : z”的意思大部分程序员应该都熟悉，稍微啰嗦一下:) 如果表达式x为true，则计算y；如果x为false，则计算z。省却if{}else{}的简单形式了。 
&lt;li&gt;
&lt;strong&gt;空合并运算符“??”：&lt;/strong&gt;该运算符是在泛型出现后，C#词法语法中新增加的标记，同时出现的还有一个“::”（命名空间别名限定符）。&lt;font color=#ff0000&gt;形式为“a??b”的空合并表达式要求a为可空类型或引用类型&lt;/font&gt;。如果a为非空则表达式“a??b”返回的结果为a；否则返回b。&lt;font color=#ff0000&gt;空合并运算符为&lt;strong&gt;右&lt;/strong&gt;结合运算符&lt;/font&gt;，即操作时从右向左进行组合的。如，“a??b??c”的形式按“a??(bb??cc)”计算。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
曾有人说过“细节决定胜负”，我们程序员应该更好的把握编程语言的细节才能更好的保证软件质量。
&lt;/p&gt;
&lt;p&gt;
特此整理存档:D
&lt;/p&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.qihangnet.com"&gt;Qihangnet&lt;/a&gt;. </description>
      <comments>http://www.qihangnet.com/CommentView,guid,2f077857-f03e-402b-9f6e-8c95a9e98b95.aspx</comments>
      <category>CSharp</category>
    </item>
    <item>
      <trackback:ping>http://www.qihangnet.com/Trackback.aspx?guid=4f568258-df34-42ad-a199-7b37b0fda7bd</trackback:ping>
      <pingback:server>http://www.qihangnet.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.qihangnet.com/PermaLink,guid,4f568258-df34-42ad-a199-7b37b0fda7bd.aspx</pingback:target>
      <dc:creator>衣明志</dc:creator>
      <wfw:comment>http://www.qihangnet.com/CommentView,guid,4f568258-df34-42ad-a199-7b37b0fda7bd.aspx</wfw:comment>
      <wfw:commentRss>http://www.qihangnet.com/SyndicationService.asmx/GetEntryCommentsRss?guid=4f568258-df34-42ad-a199-7b37b0fda7bd</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.qihangnet.com/content/binary/WindowsLiveWriter/0.3Beta_F97/youku0.3.jpg">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 5px 0px 0px; border-right-width: 0px" height="186" alt="youku0.3" src="http://www.qihangnet.com/content/binary/WindowsLiveWriter/0.3Beta_F97/youku0.3_thumb.jpg" width="260" align="left" border="0" />
          </a>    
近日党的十七大召开，而我没有电视看，就喜欢到<a href="http://www.youku.com/" target="_blank">优酷网</a>上看看别人上传的相关视频，部分视频希望能在机器上有所保留，但优酷自己并不提供文件的下载功能。找了个维棠FLV视频下载软件，却发现它无法完整下载较长的优酷视频，我稍作了原因分析后，发现是优酷的一些较长的视频是采用多文件连播的方式，也就是一个视频由多个文件共同组成，于是乎自己花了一大袋烟的工夫用c#写了这个小工具，直接将视频所在的网页地址复制到该软件的指定位置，然后点击“Go!”按钮就开始下载了，哈哈……<br />
    鉴于支持和促进和谐社会发展，俺也把这个自写小工具共享出来给朋友们使用。由于时间仓促，有一些不完善的地方敬请原谅，抽空俺也会继续更新这个小工具的:D
</p>
        <p>
          <strong>声明：本软件仅因个人爱好而开发，跟优酷网无任何关系:)</strong>
        </p>
        <p>
名     称：优荡<br />
当前版本：0.5<br />
环     境：Windows ，Microsoft .NET Framework 2.0<br />
作     者：衣明志（网名：qihangnet）<br />
最近更新：<br />
             2007年10月19日(0.5.0.0版)：<br />
                         
代码进行进一步优化<br />
                         
加快了视频分析速度<br />
                         
显示视频文件总大小<br />
                         
显示当前已下载文件文件大小<br />
                         
显示下载总进度的<strong>进度条<br /></strong>                         
添加了<strong>单视频的多文件自动合并功能</strong>（一些视频优酷使用多文件存储的，本软件下载后将同一视频的多文件进行的无缝合并，并随后删除原始文件）<br />
                         
修复了多项小Bug<br />
             2007年10月17日(0.3.0.1版)：<br />
                         
修复了2个界面上的小bug<br />
下载地址：<a href="http://www.qihangnet.com/content/binary/YouDown.exe" target="_blank">http://www.qihangnet.com/content/binary/YouDown.exe</a></p>
        <br />
        <hr />
This weblog is sponsored by <a href="http://www.qihangnet.com">Qihangnet</a>. 
</body>
      <title>下载优酷网视频的小工具：优荡0.5版</title>
      <guid isPermaLink="false">http://www.qihangnet.com/PermaLink,guid,4f568258-df34-42ad-a199-7b37b0fda7bd.aspx</guid>
      <link>http://www.qihangnet.com/PermaLink,guid,4f568258-df34-42ad-a199-7b37b0fda7bd.aspx</link>
      <pubDate>Thu, 18 Oct 2007 17:52:30 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.qihangnet.com/content/binary/WindowsLiveWriter/0.3Beta_F97/youku0.3.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; margin: 0px 5px 0px 0px; border-right-width: 0px" height="186" alt="youku0.3" src="http://www.qihangnet.com/content/binary/WindowsLiveWriter/0.3Beta_F97/youku0.3_thumb.jpg" width="260" align="left" border="0"&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
近日党的十七大召开，而我没有电视看，就喜欢到&lt;a href="http://www.youku.com/" target="_blank"&gt;优酷网&lt;/a&gt;上看看别人上传的相关视频，部分视频希望能在机器上有所保留，但优酷自己并不提供文件的下载功能。找了个维棠FLV视频下载软件，却发现它无法完整下载较长的优酷视频，我稍作了原因分析后，发现是优酷的一些较长的视频是采用多文件连播的方式，也就是一个视频由多个文件共同组成，于是乎自己花了一大袋烟的工夫用c#写了这个小工具，直接将视频所在的网页地址复制到该软件的指定位置，然后点击“Go!”按钮就开始下载了，哈哈……&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 鉴于支持和促进和谐社会发展，俺也把这个自写小工具共享出来给朋友们使用。由于时间仓促，有一些不完善的地方敬请原谅，抽空俺也会继续更新这个小工具的:D
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;声明：本软件仅因个人爱好而开发，跟优酷网无任何关系:)&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
名&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 称：优荡&lt;br&gt;
当前版本：0.5&lt;br&gt;
环&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 境：Windows ，Microsoft .NET Framework 2.0&lt;br&gt;
作&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 者：衣明志（网名：qihangnet）&lt;br&gt;
最近更新：&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; 2007年10月19日(0.5.0.0版)：&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
显示下载总进度的&lt;strong&gt;进度条&lt;br&gt;
&lt;/strong&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
添加了&lt;strong&gt;单视频的多文件自动合并功能&lt;/strong&gt;（一些视频优酷使用多文件存储的，本软件下载后将同一视频的多文件进行的无缝合并，并随后删除原始文件）&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
修复了多项小Bug&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; 2007年10月17日(0.3.0.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;&amp;nbsp;&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个界面上的小bug&lt;br&gt;
下载地址：&lt;a href="http://www.qihangnet.com/content/binary/YouDown.exe" target="_blank"&gt;http://www.qihangnet.com/content/binary/YouDown.exe&lt;/a&gt;
&lt;/p&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.qihangnet.com"&gt;Qihangnet&lt;/a&gt;. </description>
      <comments>http://www.qihangnet.com/CommentView,guid,4f568258-df34-42ad-a199-7b37b0fda7bd.aspx</comments>
      <category>CSharp</category>
      <category>DOWNLOAD</category>
      <category>技术咨询</category>
    </item>
    <item>
      <trackback:ping>http://www.qihangnet.com/Trackback.aspx?guid=5267386a-5a0a-43c4-abf3-160249e7a1d7</trackback:ping>
      <pingback:server>http://www.qihangnet.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.qihangnet.com/PermaLink,guid,5267386a-5a0a-43c4-abf3-160249e7a1d7.aspx</pingback:target>
      <dc:creator>衣明志</dc:creator>
      <wfw:comment>http://www.qihangnet.com/CommentView,guid,5267386a-5a0a-43c4-abf3-160249e7a1d7.aspx</wfw:comment>
      <wfw:commentRss>http://www.qihangnet.com/SyndicationService.asmx/GetEntryCommentsRss?guid=5267386a-5a0a-43c4-abf3-160249e7a1d7</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
asp.net 2.0中引入的Membership机制给我们做web开发带来很多便利，使得我们在做很多项目开发时处理用户和角色及权限问题时减少了相当的工作量。不过我们开发中可能会碰到一个小小的问题如下：
</p>
        <p>
我们知道MembershipUser中有如下重载的方法
</p>
        <ul>
          <li>
            <font color="#0000ff">MembershipUser.ResetPassword ()</font> ：将用户密码重置为一个自动生成的新密码。 
</li>
          <li>
            <font color="#0000ff">MembershipUser.ResetPassword (String passwordAnswer)</font> ：将用户密码重置为一个自动生成的新密码。</li>
        </ul>
        <p>
msdn中有如下描述：
</p>
        <p>
          <em>
            <b>ResetPassword</b> 调用 ProviderName 属性所引用的成员资格提供程序的 MembershipProvider.ResetPassword
方法，以将成员资格用户的密码重置为自动生成的新密码。然后将该新密码返回到调用方。</em>
        </p>
        <p>
          <em>如果 EnablePasswordReset 为 <b>false</b>，则成员资格提供程序将返回一个异常。</em>
        </p>
        <p>
          <em>如果 RequiresQuestionAndAnswer 为 <b>true</b>，则必须使用以密码提示问题答案作为参数的 ResetPassword 重载方法，并提供成员资格用户的密码。如果需要密码答案并提供了不正确的密码答案，成员资格提供程序将引发
MembershipPasswordException。</em>
        </p>
        <p>
而另外一个方法<font color="#0000ff">MembershipUser.ChangePassword(String oldPassword, String
newPassword)</font> 又必须提供原始密码，那么这里就产生了一个矛盾：我们希望用户能够通过安全问题和答案来作为找回密码，又希望管理员可以重置某用户的密码怎么办？上述方法均无法直接使用，要么使用<font color="#0000ff">MembershipUser.ResetPassword
()</font>而无安全问题和答案验证，要么必须知道问题答案或者原始密码，我们知道这些安全相关的东西我们都是加密的，而且往往采用单向编码的方式，也是说我们不可能轻易的通过读取数据库数据知道用户的答案和旧密码！那么好，如何解决这个问题呢？下面我来提供一个小的解决方案：
</p>
        <p>
Membership的数据库中包含有一个设置用户密码的存储过程：
</p>
        <pre class="csharpcode">
          <span class="kwrd">CREATE</span>
          <span class="kwrd">PROCEDURE</span> aspnet_Membership_SetPassword
( @ApplicationName nvarchar(256), @UserName nvarchar(256), @NewPassword nvarchar(128),
@PasswordSalt nvarchar(128), @CurrentTimeUtc datetime, @PasswordFormat <span class="kwrd">int</span> =
0 ) </pre>
        <style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
        <p>
返回值：成功返回 0； 
<br />
用户不存在，返回 1； 
</p>
        <p>
        </p>
        <p>
那么ok,我们开始解决我们的需求吧！思路很简单我们先设置用户一个默认的密码，然后以该密码为旧密码使用<font color="#0000ff">MembershipUser.ChangePassword(String
oldPassword, String newPassword)</font> 修改用户的密码。下面的代码是在以DataAccess.RunProcedure方法是已经实现的执行存储过程的方法为前提编写的： 
</p>
        <p>
        </p>
        <div class="csharpcode">
          <pre>
            <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
              <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span>
              <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">class</span> MembershipSafe
{ <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">static</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> ResetPassword(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> username)
{ <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//将用户密码修改为8位且包含一个特殊符号的随机密码</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">return</span> ResetPassword(username,
Membership.GeneratePassword(8,1)); } <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">static</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> ResetPassword(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> username, <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> newpassword)
{ <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//先将用户密码修改为123123</span> SqlParameter[]
_sp <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> { <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> SqlParameter(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"@ApplicationName"</span>,Membership.ApplicationName)
,<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> SqlParameter(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"@UserName"</span>,username)
,<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> SqlParameter(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"@NewPassword"</span>,<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"1M4h3eZLAKW1WbVTTwYJiJZa33w="</span>)
,<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> SqlParameter(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"@PasswordSalt"</span>,<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"rcVy3pCccZ9tXW7NHp1Maw=="</span>)
,<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> SqlParameter(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"@CurrentTimeUtc"</span>,DateTime.Now)
,<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> SqlParameter(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"@PasswordFormat"</span>,1)
}; <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">bool</span> op <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> DataAccess.RunProcedure(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"aspnet_Membership_SetPassword"</span>,
_sp) == 0; <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//以123123为原始密码，修改为新密码</span> Membership.GetUser(username).ChangePassword(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"123123"</span>,
newpassword); <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">return</span> newpassword;
} } </span>
          </pre>
        </div>
        <p>
          <strong>注：</strong>以上代码仅做参考，不一定是符合您具体项目的需求，比如有人可能会继续问修改了密码怎么告诉用户啊，答案是发邮件或者电话通知啊，哈哈～～
</p>
        <p>
          <strong>推荐浏览：</strong>
        </p>
        <ul>
          <li>
            <a href="http://www.cnblogs.com/windman" target="_blank">Windman</a>写的 ＂<a href="http://www.cnblogs.com/windman/archive/2006/09/06/496722.html">揪出ASP.NET
2.0四大“插件”的总后台 -- ASPNETDB</a> ＂</li>
        </ul>
        <br />
        <hr />
This weblog is sponsored by <a href="http://www.qihangnet.com">Qihangnet</a>. 
</body>
      <title>asp.net 应用中的Membership 重置密码问题</title>
      <guid isPermaLink="false">http://www.qihangnet.com/PermaLink,guid,5267386a-5a0a-43c4-abf3-160249e7a1d7.aspx</guid>
      <link>http://www.qihangnet.com/PermaLink,guid,5267386a-5a0a-43c4-abf3-160249e7a1d7.aspx</link>
      <pubDate>Wed, 13 Jun 2007 06:41:02 GMT</pubDate>
      <description>&lt;p&gt;
asp.net 2.0中引入的Membership机制给我们做web开发带来很多便利，使得我们在做很多项目开发时处理用户和角色及权限问题时减少了相当的工作量。不过我们开发中可能会碰到一个小小的问题如下：
&lt;/p&gt;
&lt;p&gt;
我们知道MembershipUser中有如下重载的方法
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;font color=#0000ff&gt;MembershipUser.ResetPassword ()&lt;/font&gt; ：将用户密码重置为一个自动生成的新密码。 
&lt;li&gt;
&lt;font color=#0000ff&gt;MembershipUser.ResetPassword (String passwordAnswer)&lt;/font&gt; ：将用户密码重置为一个自动生成的新密码。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
msdn中有如下描述：
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;&lt;b&gt;ResetPassword&lt;/b&gt; 调用 ProviderName 属性所引用的成员资格提供程序的 MembershipProvider.ResetPassword
方法，以将成员资格用户的密码重置为自动生成的新密码。然后将该新密码返回到调用方。&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;如果 EnablePasswordReset 为 &lt;b&gt;false&lt;/b&gt;，则成员资格提供程序将返回一个异常。&lt;/em&gt; 
&lt;p&gt;
&lt;em&gt;如果 RequiresQuestionAndAnswer 为 &lt;b&gt;true&lt;/b&gt;，则必须使用以密码提示问题答案作为参数的 ResetPassword 重载方法，并提供成员资格用户的密码。如果需要密码答案并提供了不正确的密码答案，成员资格提供程序将引发
MembershipPasswordException。&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
而另外一个方法&lt;font color=#0000ff&gt;MembershipUser.ChangePassword(String oldPassword, String
newPassword)&lt;/font&gt; 又必须提供原始密码，那么这里就产生了一个矛盾：我们希望用户能够通过安全问题和答案来作为找回密码，又希望管理员可以重置某用户的密码怎么办？上述方法均无法直接使用，要么使用&lt;font color=#0000ff&gt;MembershipUser.ResetPassword
()&lt;/font&gt;而无安全问题和答案验证，要么必须知道问题答案或者原始密码，我们知道这些安全相关的东西我们都是加密的，而且往往采用单向编码的方式，也是说我们不可能轻易的通过读取数据库数据知道用户的答案和旧密码！那么好，如何解决这个问题呢？下面我来提供一个小的解决方案：
&lt;/p&gt;
&lt;p&gt;
Membership的数据库中包含有一个设置用户密码的存储过程：
&lt;/p&gt;
&lt;pre class=csharpcode&gt;&lt;span class=kwrd&gt;CREATE&lt;/span&gt; &lt;span class=kwrd&gt;PROCEDURE&lt;/span&gt; aspnet_Membership_SetPassword
( @ApplicationName nvarchar(256), @UserName nvarchar(256), @NewPassword nvarchar(128),
@PasswordSalt nvarchar(128), @CurrentTimeUtc datetime, @PasswordFormat &lt;span class=kwrd&gt;int&lt;/span&gt; =
0 ) &lt;/pre&gt;
&lt;style type=text/css&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;p&gt;
返回值：成功返回 0； 
&lt;br&gt;
用户不存在，返回 1； 
&lt;p&gt;
&lt;p&gt;
那么ok,我们开始解决我们的需求吧！思路很简单我们先设置用户一个默认的密码，然后以该密码为旧密码使用&lt;font color=#0000ff&gt;MembershipUser.ChangePassword(String
oldPassword, String newPassword)&lt;/font&gt; 修改用户的密码。下面的代码是在以DataAccess.RunProcedure方法是已经实现的执行存储过程的方法为前提编写的： 
&lt;p&gt;
&lt;div class=csharpcode&gt;&lt;pre&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;class&lt;/span&gt; MembershipSafe
{ &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;static&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; ResetPassword(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; username)
{ &lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//将用户密码修改为8位且包含一个特殊符号的随机密码&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;return&lt;/span&gt; ResetPassword(username,
Membership.GeneratePassword(8,1)); } &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;static&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; ResetPassword(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; username, &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; newpassword)
{ &lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//先将用户密码修改为123123&lt;/span&gt; SqlParameter[]
_sp &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; { &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; SqlParameter(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"@ApplicationName"&lt;/span&gt;,Membership.ApplicationName)
,&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; SqlParameter(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"@UserName"&lt;/span&gt;,username)
,&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; SqlParameter(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"@NewPassword"&lt;/span&gt;,&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"1M4h3eZLAKW1WbVTTwYJiJZa33w="&lt;/span&gt;)
,&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; SqlParameter(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"@PasswordSalt"&lt;/span&gt;,&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"rcVy3pCccZ9tXW7NHp1Maw=="&lt;/span&gt;)
,&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; SqlParameter(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"@CurrentTimeUtc"&lt;/span&gt;,DateTime.Now)
,&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; SqlParameter(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"@PasswordFormat"&lt;/span&gt;,1)
}; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;bool&lt;/span&gt; op &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; DataAccess.RunProcedure(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"aspnet_Membership_SetPassword"&lt;/span&gt;,
_sp) == 0; &lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//以123123为原始密码，修改为新密码&lt;/span&gt; Membership.GetUser(username).ChangePassword(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"123123"&lt;/span&gt;,
newpassword); &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;return&lt;/span&gt; newpassword;
} } &lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;strong&gt;注：&lt;/strong&gt;以上代码仅做参考，不一定是符合您具体项目的需求，比如有人可能会继续问修改了密码怎么告诉用户啊，答案是发邮件或者电话通知啊，哈哈～～
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;推荐浏览：&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.cnblogs.com/windman" target=_blank&gt;Windman&lt;/a&gt;写的 ＂&lt;a href="http://www.cnblogs.com/windman/archive/2006/09/06/496722.html"&gt;揪出ASP.NET
2.0四大“插件”的总后台 -- ASPNETDB&lt;/a&gt; ＂&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.qihangnet.com"&gt;Qihangnet&lt;/a&gt;. </description>
      <comments>http://www.qihangnet.com/CommentView,guid,5267386a-5a0a-43c4-abf3-160249e7a1d7.aspx</comments>
      <category>ASP.NET</category>
      <category>CSharp</category>
      <category>DATABASE</category>
      <category>WEBSERVICE</category>
    </item>
    <item>
      <trackback:ping>http://www.qihangnet.com/Trackback.aspx?guid=db65d50a-ba90-4229-a3a2-71b4f1b407b9</trackback:ping>
      <pingback:server>http://www.qihangnet.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.qihangnet.com/PermaLink,guid,db65d50a-ba90-4229-a3a2-71b4f1b407b9.aspx</pingback:target>
      <dc:creator>衣明志</dc:creator>
      <wfw:comment>http://www.qihangnet.com/CommentView,guid,db65d50a-ba90-4229-a3a2-71b4f1b407b9.aspx</wfw:comment>
      <wfw:commentRss>http://www.qihangnet.com/SyndicationService.asmx/GetEntryCommentsRss?guid=db65d50a-ba90-4229-a3a2-71b4f1b407b9</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
最近不少Web技术圈内的朋友在讨论协议方面的事情，有的说web开发者应该熟悉web相关的协议，有的则说不用很了解。个人认为这要分层次来看待这个问题，对于一个新手或者刚入门的web开发人员而言，研究协议方面的东西可能会使得web开发失去趣味性、抹煞学习积极性，这类人应该更多的了解基本的Web技术使用。而对于在该行业工作多年的老鸟来说，协议相关的内容、标准相关内容应该尽量多些的了解，因为只有这样才能使得经手的web系统更加优秀（安全、漂亮、快速、兼容性好、体验好……）。本文我们来说一下MIME
协议的一个扩展Content-disposition。
</p>
        <p>
我们在开发web系统时有时会有以下需求：
</p>
        <ul>
          <li>
希望某类或者某已知MIME 类型的文件（比如：*.gif;*.txt;*.htm）能够在访问时弹出“文件下载”对话框 
</li>
          <li>
希望以原始文件名（上传时的文件名,例如：山东省政府1024号文件.doc）提供下载，但服务器上保存的地址却是其他文件名（如：12519810948091234_asdf.doc) 
</li>
          <li>
希望某文件直接在浏览器上显示而不是弹出文件下载对话框 
</li>
          <li>
……………………</li>
        </ul>
        <p>
要解决上述需求就可以使用Content-disposition来解决。第一个需求的解决办法是
</p>
        <div class="csharpcode">
          <pre>
            <span style="font-size: 11px; color: black; font-family: courier new; background-color: transparent">Response.AddHeader <span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4">"content-disposition"</span>,<span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4">"attachment;
filename=fname.ext"</span></span>
          </pre>
        </div>
        <div class="csharpcode">
        </div>
        <div class="csharpcode">将上述需求进行归我给出如下例子代码：
</div>
        <div class="csharpcode">
          <pre>
            <span style="font-size: 11px; color: black; font-family: courier new; background-color: transparent">
              <span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent">public</span>
              <span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent">static</span>
              <span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent">void</span> ToDownload(<span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent">string</span> serverfilpath,<span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent">string</span> filename)
{ FileStream fileStream <span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent">=</span><span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent">new</span> FileStream(serverfilpath,
FileMode.Open); <span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent">long</span> fileSize <span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent">=</span> fileStream.Length;
HttpContext.Current.Response.ContentType <span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent">=</span><span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4">"application/octet-stream"</span>;
HttpContext.Current.Response.AddHeader(<span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4">"Content-Disposition"</span>, <span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4">"attachment;
filename=\""</span><span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent">+</span> UTF_FileName(filename) <span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent">+</span><span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4">"\";"</span>); <span style="font-size: 11px; color: green; font-family: courier new; background-color: transparent">////attachment
--- 作为附件下载</span><span style="font-size: 11px; color: green; font-family: courier new; background-color: transparent">////inline
--- 在线打开</span> HttpContext.Current.Response.AddHeader(<span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4">"Content-Length"</span>,
fileSize.ToString()); <span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent">byte</span>[]
fileBuffer <span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent">=</span><span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent">new</span><span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent">byte</span>[fileSize];
fileStream.Read(fileBuffer, 0, (<span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent">int</span>)fileSize);
HttpContext.Current.Response.BinaryWrite(fileBuffer); fileStream.Close(); HttpContext.Current.Response.End();
} <span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent">public</span><span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent">static</span><span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent">void</span> ToOpen(<span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent">string</span> serverfilpath, <span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent">string</span> filename)
{ FileStream fileStream <span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent">=</span><span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent">new</span> FileStream(serverfilpath,
FileMode.Open); <span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent">long</span> fileSize <span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent">=</span> fileStream.Length;
HttpContext.Current.Response.ContentType <span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent">=</span><span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4">"application/octet-stream"</span>;
HttpContext.Current.Response.AddHeader(<span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4">"Content-Disposition"</span>, <span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4">"inline;
filename=\""</span><span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent">+</span> UTF_FileName(filename) <span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent">+</span><span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4">"\";"</span>);
HttpContext.Current.Response.AddHeader(<span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4">"Content-Length"</span>,
fileSize.ToString()); <span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent">byte</span>[]
fileBuffer <span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent">=</span><span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent">new</span><span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent">byte</span>[fileSize];
fileStream.Read(fileBuffer, 0, (<span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent">int</span>)fileSize);
HttpContext.Current.Response.BinaryWrite(fileBuffer); fileStream.Close(); HttpContext.Current.Response.End();
} <span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent">private</span><span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent">static</span><span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent">string</span> UTF_FileName(<span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent">string</span> filename)
{ <span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent">return</span> HttpUtility.UrlEncode(filename,
System.Text.Encoding.UTF8); }</span>
          </pre>
        </div>
        <p>
        </p>
        <p>
简单的对上述代码做一下解析，ToDownload方法为将一个服务器上的文件（serverfilpath为服务器上的物理地址），以某文件名(filename)在浏览器上弹出“文件下载”对话框，而ToOpen是将服务器上的某文件以某文件名在浏览器中显示/打开的。注意其中我使用了UTF_FileName方法，该方法很简单，主要为了解决包含非英文/数字名称的问题，比如说文件名为“衣明志.doc”，使用该方法客户端就不会出现乱码了。
</p>
        <p>
          <strong>需要注意以下几个问题：</strong>
        </p>
        <ol>
          <li>
Content-disposition是MIME协议的扩展，由于多方面的安全性考虑没有被标准化，所以可能某些浏览器不支持，比如说IE4.01 
</li>
          <li>
我们可以使用程序来使用它，也可以在web服务器（比如IIS）上使用它，只需要在http header上做相应的设置即可</li>
        </ol>
        <p class="csharpcode">
可参看以下几篇文档：
</p>
        <ul>
          <li class="csharpcode">
            <a href="http://support.microsoft.com/kb/260519" target="_blank">如何为已知的 MIME 类型激活“文件下载”对话框</a>
          </li>
          <li class="csharpcode">
            <a href="http://www.faqs.org/rfcs/rfc2183.html" target="_blank">Communicating Presentation
Information in Internet Messages: The Content-Disposition Header Field</a>
          </li>
          <li class="csharpcode">
            <a href="http://www.w3.org/Protocols/rfc2616/rfc2616.html" target="_blank">Hypertext
Transfer Protocol -- HTTP/1.1</a>
          </li>
        </ul>
        <style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
        <style type="text/css">.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
</style>
        <br />
        <hr />
This weblog is sponsored by <a href="http://www.qihangnet.com">Qihangnet</a>. 
</body>
      <title>Content-Disposition的使用和注意事项</title>
      <guid isPermaLink="false">http://www.qihangnet.com/PermaLink,guid,db65d50a-ba90-4229-a3a2-71b4f1b407b9.aspx</guid>
      <link>http://www.qihangnet.com/PermaLink,guid,db65d50a-ba90-4229-a3a2-71b4f1b407b9.aspx</link>
      <pubDate>Fri, 04 May 2007 19:03:14 GMT</pubDate>
      <description>&lt;p&gt;
最近不少Web技术圈内的朋友在讨论协议方面的事情，有的说web开发者应该熟悉web相关的协议，有的则说不用很了解。个人认为这要分层次来看待这个问题，对于一个新手或者刚入门的web开发人员而言，研究协议方面的东西可能会使得web开发失去趣味性、抹煞学习积极性，这类人应该更多的了解基本的Web技术使用。而对于在该行业工作多年的老鸟来说，协议相关的内容、标准相关内容应该尽量多些的了解，因为只有这样才能使得经手的web系统更加优秀（安全、漂亮、快速、兼容性好、体验好……）。本文我们来说一下MIME
协议的一个扩展Content-disposition。
&lt;/p&gt;
&lt;p&gt;
我们在开发web系统时有时会有以下需求：
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
希望某类或者某已知MIME 类型的文件（比如：*.gif;*.txt;*.htm）能够在访问时弹出“文件下载”对话框 
&lt;li&gt;
希望以原始文件名（上传时的文件名,例如：山东省政府1024号文件.doc）提供下载，但服务器上保存的地址却是其他文件名（如：12519810948091234_asdf.doc) 
&lt;li&gt;
希望某文件直接在浏览器上显示而不是弹出文件下载对话框 
&lt;li&gt;
……………………&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
要解决上述需求就可以使用Content-disposition来解决。第一个需求的解决办法是
&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre&gt;&lt;span style="font-size: 11px; color: black; font-family: courier new; background-color: transparent"&gt;Response.AddHeader &lt;span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4"&gt;"content-disposition"&lt;/span&gt;,&lt;span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4"&gt;"attachment;
filename=fname.ext"&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div class="csharpcode"&gt;
&lt;/div&gt;
&lt;div class="csharpcode"&gt;将上述需求进行归我给出如下例子代码：
&lt;/div&gt;
&lt;div class="csharpcode"&gt;&lt;pre&gt;&lt;span style="font-size: 11px; color: black; font-family: courier new; background-color: transparent"&gt;&lt;span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent"&gt;public&lt;/span&gt; &lt;span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent"&gt;static&lt;/span&gt; &lt;span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent"&gt;void&lt;/span&gt; ToDownload(&lt;span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent"&gt;string&lt;/span&gt; serverfilpath,&lt;span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent"&gt;string&lt;/span&gt; filename)
{ FileStream fileStream &lt;span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent"&gt;=&lt;/span&gt; &lt;span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent"&gt;new&lt;/span&gt; FileStream(serverfilpath,
FileMode.Open); &lt;span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent"&gt;long&lt;/span&gt; fileSize &lt;span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent"&gt;=&lt;/span&gt; fileStream.Length;
HttpContext.Current.Response.ContentType &lt;span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent"&gt;=&lt;/span&gt; &lt;span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4"&gt;"application/octet-stream"&lt;/span&gt;;
HttpContext.Current.Response.AddHeader(&lt;span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4"&gt;"Content-Disposition"&lt;/span&gt;, &lt;span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4"&gt;"attachment;
filename=\""&lt;/span&gt; &lt;span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent"&gt;+&lt;/span&gt; UTF_FileName(filename) &lt;span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent"&gt;+&lt;/span&gt; &lt;span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4"&gt;"\";"&lt;/span&gt;); &lt;span style="font-size: 11px; color: green; font-family: courier new; background-color: transparent"&gt;////attachment
--- 作为附件下载&lt;/span&gt; &lt;span style="font-size: 11px; color: green; font-family: courier new; background-color: transparent"&gt;////inline
--- 在线打开&lt;/span&gt; HttpContext.Current.Response.AddHeader(&lt;span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4"&gt;"Content-Length"&lt;/span&gt;,
fileSize.ToString()); &lt;span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent"&gt;byte&lt;/span&gt;[]
fileBuffer &lt;span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent"&gt;=&lt;/span&gt; &lt;span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent"&gt;new&lt;/span&gt; &lt;span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent"&gt;byte&lt;/span&gt;[fileSize];
fileStream.Read(fileBuffer, 0, (&lt;span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent"&gt;int&lt;/span&gt;)fileSize);
HttpContext.Current.Response.BinaryWrite(fileBuffer); fileStream.Close(); HttpContext.Current.Response.End();
} &lt;span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent"&gt;public&lt;/span&gt; &lt;span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent"&gt;static&lt;/span&gt; &lt;span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent"&gt;void&lt;/span&gt; ToOpen(&lt;span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent"&gt;string&lt;/span&gt; serverfilpath, &lt;span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent"&gt;string&lt;/span&gt; filename)
{ FileStream fileStream &lt;span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent"&gt;=&lt;/span&gt; &lt;span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent"&gt;new&lt;/span&gt; FileStream(serverfilpath,
FileMode.Open); &lt;span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent"&gt;long&lt;/span&gt; fileSize &lt;span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent"&gt;=&lt;/span&gt; fileStream.Length;
HttpContext.Current.Response.ContentType &lt;span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent"&gt;=&lt;/span&gt; &lt;span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4"&gt;"application/octet-stream"&lt;/span&gt;;
HttpContext.Current.Response.AddHeader(&lt;span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4"&gt;"Content-Disposition"&lt;/span&gt;, &lt;span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4"&gt;"inline;
filename=\""&lt;/span&gt; &lt;span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent"&gt;+&lt;/span&gt; UTF_FileName(filename) &lt;span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent"&gt;+&lt;/span&gt; &lt;span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4"&gt;"\";"&lt;/span&gt;);
HttpContext.Current.Response.AddHeader(&lt;span style="font-size: 11px; color: #666666; font-family: courier new; background-color: #e4e4e4"&gt;"Content-Length"&lt;/span&gt;,
fileSize.ToString()); &lt;span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent"&gt;byte&lt;/span&gt;[]
fileBuffer &lt;span style="font-size: 11px; color: red; font-family: courier new; background-color: transparent"&gt;=&lt;/span&gt; &lt;span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent"&gt;new&lt;/span&gt; &lt;span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent"&gt;byte&lt;/span&gt;[fileSize];
fileStream.Read(fileBuffer, 0, (&lt;span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent"&gt;int&lt;/span&gt;)fileSize);
HttpContext.Current.Response.BinaryWrite(fileBuffer); fileStream.Close(); HttpContext.Current.Response.End();
} &lt;span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent"&gt;private&lt;/span&gt; &lt;span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent"&gt;static&lt;/span&gt; &lt;span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent"&gt;string&lt;/span&gt; UTF_FileName(&lt;span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent"&gt;string&lt;/span&gt; filename)
{ &lt;span style="font-size: 11px; color: blue; font-family: courier new; background-color: transparent"&gt;return&lt;/span&gt; HttpUtility.UrlEncode(filename,
System.Text.Encoding.UTF8); }&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
简单的对上述代码做一下解析，ToDownload方法为将一个服务器上的文件（serverfilpath为服务器上的物理地址），以某文件名(filename)在浏览器上弹出“文件下载”对话框，而ToOpen是将服务器上的某文件以某文件名在浏览器中显示/打开的。注意其中我使用了UTF_FileName方法，该方法很简单，主要为了解决包含非英文/数字名称的问题，比如说文件名为“衣明志.doc”，使用该方法客户端就不会出现乱码了。
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;需要注意以下几个问题：&lt;/strong&gt; 
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Content-disposition是MIME协议的扩展，由于多方面的安全性考虑没有被标准化，所以可能某些浏览器不支持，比如说IE4.01 
&lt;li&gt;
我们可以使用程序来使用它，也可以在web服务器（比如IIS）上使用它，只需要在http header上做相应的设置即可&lt;/li&gt;
&lt;/ol&gt;
&lt;p class="csharpcode"&gt;
可参看以下几篇文档：
&lt;/p&gt;
&lt;ul&gt;
&lt;li class="csharpcode"&gt;
&lt;a href="http://support.microsoft.com/kb/260519" target="_blank"&gt;如何为已知的 MIME 类型激活“文件下载”对话框&lt;/a&gt; 
&lt;li class="csharpcode"&gt;
&lt;a href="http://www.faqs.org/rfcs/rfc2183.html" target="_blank"&gt;Communicating Presentation
Information in Internet Messages: The Content-Disposition Header Field&lt;/a&gt; 
&lt;li class="csharpcode"&gt;
&lt;a href="http://www.w3.org/Protocols/rfc2616/rfc2616.html" target="_blank"&gt;Hypertext
Transfer Protocol -- HTTP/1.1&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.qihangnet.com"&gt;Qihangnet&lt;/a&gt;. </description>
      <comments>http://www.qihangnet.com/CommentView,guid,db65d50a-ba90-4229-a3a2-71b4f1b407b9.aspx</comments>
      <category>ASP</category>
      <category>ASP.NET</category>
      <category>CSharp</category>
      <category>WEBSERVICE</category>
      <category>技术咨询</category>
    </item>
    <item>
      <trackback:ping>http://www.qihangnet.com/Trackback.aspx?guid=74a4e11f-0e92-4c2d-9cf9-1310ad1c3b7c</trackback:ping>
      <pingback:server>http://www.qihangnet.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.qihangnet.com/PermaLink,guid,74a4e11f-0e92-4c2d-9cf9-1310ad1c3b7c.aspx</pingback:target>
      <dc:creator>衣明志</dc:creator>
      <wfw:comment>http://www.qihangnet.com/CommentView,guid,74a4e11f-0e92-4c2d-9cf9-1310ad1c3b7c.aspx</wfw:comment>
      <wfw:commentRss>http://www.qihangnet.com/SyndicationService.asmx/GetEntryCommentsRss?guid=74a4e11f-0e92-4c2d-9cf9-1310ad1c3b7c</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
 将VS2003下的一个Web项目升级到VS2005后，去除明显错误后编译测试运行。某页面发现一个问题：
</p>
        <p>
          <a href="http://www.qihangnet.com/content/binary/WindowsLiveWriter/43d6343ee45d_13F04/aspnet_error__________%5B9%5D.png" atomicselection="true">
            <img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="127" src="http://www.qihangnet.com/content/binary/WindowsLiveWriter/43d6343ee45d_13F04/aspnet_error___________thumb%5B7%5D.png" width="488" border="0" />
          </a>
        </p>
        <blockquote>
          <p>
“/”应用程序中的服务器错误。 
</p>
          <p>
          </p>
          <p>
            <i>分析器错误</i>
          </p>
          <p>
            <b>说明: </b>在分析向此请求提供服务所需资源时出错。请检查下列特定分析错误详细信息并适当地修改源文件。 
</p>
          <p>
          </p>
          <b>分析器错误信息: </b>发现不明确的匹配。
</blockquote>
        <p>
这个问题发生原因一般情况是：
</p>
        <p>
          <strong>
            <font color="#ff0000">aspx页面里面的控件有与您的aspx.cs里的类变量重名（不区分大小写）的ID</font>
          </strong>
        </p>
        <p>
那么我发现在代码中有如下的声明： 
</p>
        <p>
          <span style="color: #0000ff">protected</span> System.Web.UI.WebControls.Label BlogID;<br /><span style="color: #0000ff">protected</span> System.Web.UI.WebControls.Label blogID; 
</p>
        <p>
blogID在前台控件中不存在，仅在cs代码中声明了，因此产生了上述的问题。 
</p>
        <p>
  
</p>
        <p>
          <strong>由此看来虽然，C#等语言中允许我们使用大小写不同来声明不同的变量，但是我们应该尽量避免这样的情况，使用完全不同的名字区分不同的变量为好啊。</strong>
        </p>
        <br />
        <hr />
This weblog is sponsored by <a href="http://www.qihangnet.com">Qihangnet</a>. 
</body>
      <title>发现不明确的匹配的解决方案</title>
      <guid isPermaLink="false">http://www.qihangnet.com/PermaLink,guid,74a4e11f-0e92-4c2d-9cf9-1310ad1c3b7c.aspx</guid>
      <link>http://www.qihangnet.com/PermaLink,guid,74a4e11f-0e92-4c2d-9cf9-1310ad1c3b7c.aspx</link>
      <pubDate>Tue, 02 Jan 2007 14:50:23 GMT</pubDate>
      <description>&lt;p&gt;
&amp;nbsp;将VS2003下的一个Web项目升级到VS2005后，去除明显错误后编译测试运行。某页面发现一个问题：
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.qihangnet.com/content/binary/WindowsLiveWriter/43d6343ee45d_13F04/aspnet_error__________%5B9%5D.png" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="127" src="http://www.qihangnet.com/content/binary/WindowsLiveWriter/43d6343ee45d_13F04/aspnet_error___________thumb%5B7%5D.png" width="488" border="0"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
“/”应用程序中的服务器错误。 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;分析器错误&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;说明: &lt;/b&gt;在分析向此请求提供服务所需资源时出错。请检查下列特定分析错误详细信息并适当地修改源文件。 
&lt;p&gt;
&lt;/p&gt;
&lt;b&gt;分析器错误信息: &lt;/b&gt;发现不明确的匹配。&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
这个问题发生原因一般情况是：
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;&lt;font color="#ff0000"&gt;aspx页面里面的控件有与您的aspx.cs里的类变量重名（不区分大小写）的ID&lt;/font&gt;&lt;/strong&gt; 
&lt;p&gt;
那么我发现在代码中有如下的声明： 
&lt;p&gt;
&lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; System.Web.UI.WebControls.Label BlogID;&lt;br&gt;
&lt;span style="color: #0000ff"&gt;protected&lt;/span&gt; System.Web.UI.WebControls.Label blogID; 
&lt;p&gt;
blogID在前台控件中不存在，仅在cs代码中声明了，因此产生了上述的问题。 
&lt;p&gt;
&amp;nbsp; 
&lt;p&gt;
&lt;strong&gt;由此看来虽然，C#等语言中允许我们使用大小写不同来声明不同的变量，但是我们应该尽量避免这样的情况，使用完全不同的名字区分不同的变量为好啊。&lt;/strong&gt;
&lt;/p&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.qihangnet.com"&gt;Qihangnet&lt;/a&gt;. </description>
      <comments>http://www.qihangnet.com/CommentView,guid,74a4e11f-0e92-4c2d-9cf9-1310ad1c3b7c.aspx</comments>
      <category>ASP.NET</category>
      <category>CSharp</category>
    </item>
    <item>
      <trackback:ping>http://www.qihangnet.com/Trackback.aspx?guid=11348f5d-2c69-4afe-99af-502cec2253b2</trackback:ping>
      <pingback:server>http://www.qihangnet.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.qihangnet.com/PermaLink,guid,11348f5d-2c69-4afe-99af-502cec2253b2.aspx</pingback:target>
      <dc:creator>衣明志</dc:creator>
      <wfw:comment>http://www.qihangnet.com/CommentView,guid,11348f5d-2c69-4afe-99af-502cec2253b2.aspx</wfw:comment>
      <wfw:commentRss>http://www.qihangnet.com/SyndicationService.asmx/GetEntryCommentsRss?guid=11348f5d-2c69-4afe-99af-502cec2253b2</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <strong>String.Split 方法</strong>：标识此实例中的子字符串（它们由数组中指定的一个或多个字符进行分隔），然后将这些子字符串放入一个 <a href="ms-help://ms.vscc.2003/frlrfsystemstringclasstopic.htm">String</a> 数组中。
</p>
        <p>
          <strong>Regex.Split 方法</strong>：在由正则表达式匹配项定义的位置将输入字符串拆分为一个子字符串数组。
</p>
        <p>
上面的两个Split方法，在使用单字符拆分字符串的时候效果一样。然而在使用多个字符拆分字符串时，就有所区别了：
</p>
        <p>
Srting.Split(字符串.ToCharArray())得到的结果往往不是我们希望的结果。所以在此推荐使用<strong>Regex.Split方法</strong>处理使用多字符拆分字符串。
</p>
        <br />
        <hr />
This weblog is sponsored by <a href="http://www.qihangnet.com">Qihangnet</a>. 
</body>
      <title>Split方法的使用问题</title>
      <guid isPermaLink="false">http://www.qihangnet.com/PermaLink,guid,11348f5d-2c69-4afe-99af-502cec2253b2.aspx</guid>
      <link>http://www.qihangnet.com/PermaLink,guid,11348f5d-2c69-4afe-99af-502cec2253b2.aspx</link>
      <pubDate>Sun, 27 Aug 2006 03:45:34 GMT</pubDate>
      <description>&lt;p&gt;
&lt;strong&gt;String.Split 方法&lt;/strong&gt;：标识此实例中的子字符串（它们由数组中指定的一个或多个字符进行分隔），然后将这些子字符串放入一个 &lt;a href="ms-help://ms.vscc.2003/frlrfsystemstringclasstopic.htm"&gt;String&lt;/a&gt; 数组中。
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Regex.Split 方法&lt;/strong&gt;：在由正则表达式匹配项定义的位置将输入字符串拆分为一个子字符串数组。
&lt;/p&gt;
&lt;p&gt;
上面的两个Split方法，在使用单字符拆分字符串的时候效果一样。然而在使用多个字符拆分字符串时，就有所区别了：
&lt;/p&gt;
&lt;p&gt;
Srting.Split(字符串.ToCharArray())得到的结果往往不是我们希望的结果。所以在此推荐使用&lt;strong&gt;Regex.Split方法&lt;/strong&gt;处理使用多字符拆分字符串。
&lt;/p&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.qihangnet.com"&gt;Qihangnet&lt;/a&gt;. </description>
      <comments>http://www.qihangnet.com/CommentView,guid,11348f5d-2c69-4afe-99af-502cec2253b2.aspx</comments>
      <category>CSharp</category>
    </item>
    <item>
      <trackback:ping>http://www.qihangnet.com/Trackback.aspx?guid=9d0edcb1-da97-466f-8dba-c7f8ae892439</trackback:ping>
      <pingback:server>http://www.qihangnet.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.qihangnet.com/PermaLink,guid,9d0edcb1-da97-466f-8dba-c7f8ae892439.aspx</pingback:target>
      <dc:creator>衣明志</dc:creator>
      <wfw:comment>http://www.qihangnet.com/CommentView,guid,9d0edcb1-da97-466f-8dba-c7f8ae892439.aspx</wfw:comment>
      <wfw:commentRss>http://www.qihangnet.com/SyndicationService.asmx/GetEntryCommentsRss?guid=9d0edcb1-da97-466f-8dba-c7f8ae892439</wfw:commentRss>
      <slash:comments>7</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
VS2005目前还没有官方正式的简体中文版本，这个安装包是我从SQL2005CTP版的安装包里抽取出来的，中文化已经非常高了，特别是在vs2005的起始页的社区文档也成了调用msdn中文网站的了。很不错。
</p>
        <p>
          <font color="#0000ff">
            <strike>点击下载</strike>
          </font>（约55M）
</p>
        <p>
下载完以后请将文件的扩展名.zip修改为.iso，然后运行其中的<font color="#ff0000">vs_setup.msi</font>文件。
</p>
        <p>
          <font color="#ff0000">注意:安装过程没有进度窗口,安装完毕会显示一个安装完成的提示窗口。</font>
        </p>
        <p>
          <a href="http://www.qihangnet.com/content/binary/vs2005chs1.jpg">
            <img style="WIDTH: 462px; HEIGHT: 490px" height="667" src="http://www.qihangnet.com/content/binary/vs2005chs1.jpg" width="786" border="0" />
          </a>
        </p>
        <br />
        <hr />
This weblog is sponsored by <a href="http://www.qihangnet.com">Qihangnet</a>. 
</body>
      <title>VS2005简体中文安装包</title>
      <guid isPermaLink="false">http://www.qihangnet.com/PermaLink,guid,9d0edcb1-da97-466f-8dba-c7f8ae892439.aspx</guid>
      <link>http://www.qihangnet.com/PermaLink,guid,9d0edcb1-da97-466f-8dba-c7f8ae892439.aspx</link>
      <pubDate>Fri, 11 Nov 2005 04:59:32 GMT</pubDate>
      <description>&lt;p&gt;
VS2005目前还没有官方正式的简体中文版本，这个安装包是我从SQL2005CTP版的安装包里抽取出来的，中文化已经非常高了，特别是在vs2005的起始页的社区文档也成了调用msdn中文网站的了。很不错。
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#0000ff&gt;&lt;strike&gt;点击下载&lt;/strike&gt;&lt;/font&gt;（约55M）
&lt;/p&gt;
&lt;p&gt;
下载完以后请将文件的扩展名.zip修改为.iso，然后运行其中的&lt;font color=#ff0000&gt;vs_setup.msi&lt;/font&gt;文件。
&lt;/p&gt;
&lt;p&gt;
&lt;font color=#ff0000&gt;注意:安装过程没有进度窗口,安装完毕会显示一个安装完成的提示窗口。&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.qihangnet.com/content/binary/vs2005chs1.jpg"&gt;&lt;img style="WIDTH: 462px; HEIGHT: 490px" height=667 src="http://www.qihangnet.com/content/binary/vs2005chs1.jpg" width=786 border=0&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.qihangnet.com"&gt;Qihangnet&lt;/a&gt;. </description>
      <comments>http://www.qihangnet.com/CommentView,guid,9d0edcb1-da97-466f-8dba-c7f8ae892439.aspx</comments>
      <category>ASP.NET</category>
      <category>CSharp</category>
      <category>DOWNLOAD</category>
    </item>
    <item>
      <trackback:ping>http://www.qihangnet.com/Trackback.aspx?guid=d8124bd9-a34d-4bbe-b899-0851efbf0f80</trackback:ping>
      <pingback:server>http://www.qihangnet.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.qihangnet.com/PermaLink,guid,d8124bd9-a34d-4bbe-b899-0851efbf0f80.aspx</pingback:target>
      <dc:creator>衣明志</dc:creator>
      <wfw:comment>http://www.qihangnet.com/CommentView,guid,d8124bd9-a34d-4bbe-b899-0851efbf0f80.aspx</wfw:comment>
      <wfw:commentRss>http://www.qihangnet.com/SyndicationService.asmx/GetEntryCommentsRss?guid=d8124bd9-a34d-4bbe-b899-0851efbf0f80</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
从<a href="http://blog.joycode.com/zhanbos">孙展波</a>的博客上看到了一个则令人激动的消息：
</p>
        <p>
          <em>2005年10月27日上午微软RTM了Visual Studio 2005和.NET Framework 2.0。</em>
        </p>
        <p>
          <em>MSDN订户将可以在今天晚些时候下载Visual Studio 2005的各个版本。非MSDN订户可以在Microsoft Download Center下载.NET
Framework及其SDK。在11月7日之后，非MSDN订户还可以下载Visual Basic, Visual C#, Visual C++, Visual Web
Developer, Visual J#, 和SQL Server的Express版本。</em>
        </p>
        <p>
我激动不已，于是下载<a href="http://www.qihangnet.com/temp/vs_uninst.exe">VS2005旧版卸载软件</a>将Beta2的卸载了，可惜卸载完毕才想起来还没有搞到RTM版的安装程序呢:( 
</p>
        <p>
只好等<a href="http://blog.joycode.com/joy/">开心</a>下个月给俱乐部带来VSTSBeta3再说吧，~~如果是MVP多好啊:)
</p>
        <br />
        <hr />
This weblog is sponsored by <a href="http://www.qihangnet.com">Qihangnet</a>. 
</body>
      <title>2005年10月27日上午：Visual Studio 2005和.NET Framework 2.0发布了 </title>
      <guid isPermaLink="false">http://www.qihangnet.com/PermaLink,guid,d8124bd9-a34d-4bbe-b899-0851efbf0f80.aspx</guid>
      <link>http://www.qihangnet.com/PermaLink,guid,d8124bd9-a34d-4bbe-b899-0851efbf0f80.aspx</link>
      <pubDate>Fri, 28 Oct 2005 03:02:41 GMT</pubDate>
      <description>&lt;p&gt;
从&lt;a href="http://blog.joycode.com/zhanbos"&gt;孙展波&lt;/a&gt;的博客上看到了一个则令人激动的消息：
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;2005年10月27日上午微软RTM了Visual Studio 2005和.NET Framework 2.0。&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;MSDN订户将可以在今天晚些时候下载Visual Studio 2005的各个版本。非MSDN订户可以在Microsoft Download Center下载.NET
Framework及其SDK。在11月7日之后，非MSDN订户还可以下载Visual Basic, Visual C#, Visual C++, Visual Web
Developer, Visual J#, 和SQL Server的Express版本。&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
我激动不已，于是下载&lt;a href="http://www.qihangnet.com/temp/vs_uninst.exe"&gt;VS2005旧版卸载软件&lt;/a&gt;将Beta2的卸载了，可惜卸载完毕才想起来还没有搞到RTM版的安装程序呢:( 
&lt;/p&gt;
&lt;p&gt;
只好等&lt;a href="http://blog.joycode.com/joy/"&gt;开心&lt;/a&gt;下个月给俱乐部带来VSTSBeta3再说吧，~~如果是MVP多好啊:)
&lt;/p&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.qihangnet.com"&gt;Qihangnet&lt;/a&gt;. </description>
      <comments>http://www.qihangnet.com/CommentView,guid,d8124bd9-a34d-4bbe-b899-0851efbf0f80.aspx</comments>
      <category>ASP.NET</category>
      <category>CSharp</category>
      <category>DOWNLOAD</category>
    </item>
    <item>
      <trackback:ping>http://www.qihangnet.com/Trackback.aspx?guid=f06deeef-1027-45e6-b7aa-148977ff6b23</trackback:ping>
      <pingback:server>http://www.qihangnet.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.qihangnet.com/PermaLink,guid,f06deeef-1027-45e6-b7aa-148977ff6b23.aspx</pingback:target>
      <dc:creator>衣明志</dc:creator>
      <wfw:comment>http://www.qihangnet.com/CommentView,guid,f06deeef-1027-45e6-b7aa-148977ff6b23.aspx</wfw:comment>
      <wfw:commentRss>http://www.qihangnet.com/SyndicationService.asmx/GetEntryCommentsRss?guid=f06deeef-1027-45e6-b7aa-148977ff6b23</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
在实际开发Asp.Net项目时，程序可能会出现一些异常，那么我们应该怎么去获得尽量多的系统异常，以便后期维护过程能够尽可能重现异常，及时分析、发现和修复Bug。为了处理这个问题，我写了一个小程序来帮助实现我的需求。
</p>
        <p>
首先，我写了一个日志记录的类，以便能够把捕获的异常以及相关的用户信息以XML方式写入指定目录：
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">using</span> System;<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">using</span> System.Data;<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">using</span> System.Data.SqlClient;<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">using</span> System.IO;<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">using</span> System.Xml;<br /><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">namespace</span> Logs<br />
{<br />
    <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">///
&lt;summary&gt;</span><br />
    <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">///
Logs 的摘要说明。</span><br />
    <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">///
&lt;/summary&gt;</span><br />
    <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">class</span> WebLogs<br />
    {<br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">private</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> logPath <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span>.Empty;<br /><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span> WebLogs(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> LogPath)<br />
        {<br />
            <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//</span><br />
            <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//
TODO: 在此处添加构造函数逻辑</span><br />
            <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//</span><br />
            logPath <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> LogPath;<br />
        }<br /><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> FloderPath<br />
        {<br />
            get<br />
            {<br />
                <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">return</span> logPath;<br />
            }<br />
            set<br />
            {<br />
                logPath <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> value;<br />
            }<br />
        }<br /><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">public</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">void</span> Add(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> LogType,<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> UserName,<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> Content,<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> IP,<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> Agent,<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> Url,<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> UrlReferrer)<br />
        {<br />
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> filename <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> LogType+<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"-"</span>+DateTime.Now.ToShortDateString()<span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">+</span><span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">".xml"</span>;<br />
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> filepath <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> logPath <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">+</span> filename;<br />
            LogWrite(filepath,UserName,Content,IP,Agent,Url,UrlReferrer);<br />
        }<br /><br />
        <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">private</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">void</span> LogWrite(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> filepath,<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> UserName,<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> Content,<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> IP,<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> Agent,<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> Url,<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> UrlReferrer)<br />
        {<br />
            XmlDocument
xdoc <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> XmlDocument();<br />
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">if</span>(!File.Exists(filepath))<br />
            {<br />
                xdoc.LoadXml(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"&lt;?xml
version=\"1.0\" encoding=\"utf-8\"?&gt;"</span><span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">+</span><br />
                             <span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"&lt;WebLogs&gt;&lt;/WebLogs&gt;"</span>);<br />
            }<br />
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">else</span><br />
            {<br />
                xdoc.Load(filepath);<br />
            }<br /><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//
创建一个新的日志节点并将它添加到根节点下</span><br />
            XmlElement
parentNode <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> xdoc.CreateElement(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"WebLog"</span>);<br />
            xdoc.DocumentElement.PrependChild(parentNode);<br />
            <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//
创建所有用于存储信息的节点</span><br />
            XmlElement
nameNode <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> xdoc.CreateElement(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"UserName"</span>);<br />
            XmlElement
contentNode <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> xdoc.CreateElement(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Content"</span>);<br />
            XmlElement
timeNode <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> xdoc.CreateElement(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Time"</span>);<br />
            XmlElement
ipNode <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> xdoc.CreateElement(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"IP"</span>);<br />
            XmlElement
agentNode <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> xdoc.CreateElement(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Agent"</span>);<br />
            XmlElement
urlNode <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> xdoc.CreateElement(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Url"</span>);<br />
            XmlElement
referrerNode <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> xdoc.CreateElement(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Referrer"</span>);<br />
            <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//
获取文本信息</span><br />
            XmlText nameText <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> xdoc.CreateTextNode(UserName);<br />
            XmlText contentText <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> xdoc.CreateTextNode(Content);<br />
            XmlText timeText <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> xdoc.CreateTextNode(DateTime.Now.ToString());<br />
            XmlText ipText <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> xdoc.CreateTextNode(IP);<br />
            XmlText agentText <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> xdoc.CreateTextNode(Agent);<br />
            XmlText urlText <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> xdoc.CreateTextNode(Url);<br />
            XmlText referrerText <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> xdoc.CreateTextNode(UrlReferrer);<br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//
将上面创建的各个存储信息的节点添加到guest节点下但并不包含最终的值</span><br />
            parentNode.AppendChild(nameNode);<br />
            parentNode.AppendChild(contentNode);<br />
            parentNode.AppendChild(timeNode);<br />
            parentNode.AppendChild(ipNode);<br />
            parentNode.AppendChild(agentNode);<br />
            parentNode.AppendChild(urlNode);<br />
            parentNode.AppendChild(referrerNode);<br />
            <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//
将上面获取的文本信息添加到与之相对应的节点中</span><br />
            nameNode.AppendChild(nameText);<br />
            contentNode.AppendChild(contentText);<br />
            timeNode.AppendChild(timeText);<br />
            ipNode.AppendChild(ipText);<br />
            agentNode.AppendChild(agentText);<br />
            urlNode.AppendChild(urlText);<br />
            referrerNode.AppendChild(referrerText);<br /><br />
            <span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//
保存存储信息的XML文件</span><br />
            xdoc.Save(filepath);<br />
            xdoc <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">null</span>;<br />
        }<br />
    }<br />
}</span>
        </p>
        <p>
然后，我在我的Asp.Net站点的Global.asax.cs的Application_Error事件里加入以下代码：
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">WebLogs
Logs <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> WebLogs(Server.MapPath(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"logs/"</span>));<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> referrerUri <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> (Request.UrlReferrer
!<span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">null</span>)
?Request.UrlReferrer.AbsoluteUri : <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span>.Empty;<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span> UserName <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> (User.Identity.Name
!<span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">string</span>.Empty)
? User.Identity.Name : <span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Anonymous"</span>;<br />
Logs.Add(<span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Error"</span>,UserName,Server.GetLastError().ToString(),Request.UserHostAddress,Request.UserAgent,Request.Url.AbsoluteUri,referrerUri);</span>
        </p>
        <br />
        <hr />
This weblog is sponsored by <a href="http://www.qihangnet.com">Qihangnet</a>. 
</body>
      <title>一个简单的asp.net异常记录程序</title>
      <guid isPermaLink="false">http://www.qihangnet.com/PermaLink,guid,f06deeef-1027-45e6-b7aa-148977ff6b23.aspx</guid>
      <link>http://www.qihangnet.com/PermaLink,guid,f06deeef-1027-45e6-b7aa-148977ff6b23.aspx</link>
      <pubDate>Thu, 25 Aug 2005 06:40:44 GMT</pubDate>
      <description>&lt;p&gt;
在实际开发Asp.Net项目时，程序可能会出现一些异常，那么我们应该怎么去获得尽量多的系统异常，以便后期维护过程能够尽可能重现异常，及时分析、发现和修复Bug。为了处理这个问题，我写了一个小程序来帮助实现我的需求。
&lt;/p&gt;
&lt;p&gt;
首先，我写了一个日志记录的类，以便能够把捕获的异常以及相关的用户信息以XML方式写入指定目录：
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;using&lt;/span&gt; System;&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;using&lt;/span&gt; System.Data;&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;using&lt;/span&gt; System.Data.SqlClient;&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;using&lt;/span&gt; System.IO;&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;using&lt;/span&gt; System.Xml;&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;namespace&lt;/span&gt; Logs&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;///
&amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;///
Logs 的摘要说明。&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;///
&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;class&lt;/span&gt; WebLogs&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;private&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; logPath &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt;.Empty;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; WebLogs(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; LogPath)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//&lt;/span&gt;
&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;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//
TODO: 在此处添加构造函数逻辑&lt;/span&gt;
&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;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//&lt;/span&gt;
&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;logPath &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; LogPath;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; FloderPath&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;get&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;{&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;return&lt;/span&gt; logPath;&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;}&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;set&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;{&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;logPath &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; value;&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;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; Add(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; LogType,&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; UserName,&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; Content,&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; IP,&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; Agent,&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; Url,&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; UrlReferrer)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; filename &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; LogType+&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"-"&lt;/span&gt;+DateTime.Now.ToShortDateString()&lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;+&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;".xml"&lt;/span&gt;;&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;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; filepath &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; logPath &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;+&lt;/span&gt; filename;&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;LogWrite(filepath,UserName,Content,IP,Agent,Url,UrlReferrer);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;private&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; LogWrite(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; filepath,&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; UserName,&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; Content,&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; IP,&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; Agent,&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; Url,&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; UrlReferrer)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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;XmlDocument
xdoc &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; XmlDocument();&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;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;if&lt;/span&gt;(!File.Exists(filepath))&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;{&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xdoc.LoadXml(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"&amp;lt;?xml
version=\"1.0\" encoding=\"utf-8\"?&amp;gt;"&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;+&lt;/span&gt;
&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"&amp;lt;WebLogs&amp;gt;&amp;lt;/WebLogs&amp;gt;"&lt;/span&gt;);&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;}&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;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;else&lt;/span&gt;
&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;{&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;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xdoc.Load(filepath);&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;}&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//
创建一个新的日志节点并将它添加到根节点下&lt;/span&gt;
&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;XmlElement
parentNode &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; xdoc.CreateElement(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"WebLog"&lt;/span&gt;);&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;xdoc.DocumentElement.PrependChild(parentNode);&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;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//
创建所有用于存储信息的节点&lt;/span&gt;
&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;XmlElement
nameNode &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; xdoc.CreateElement(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"UserName"&lt;/span&gt;);&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;XmlElement
contentNode &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; xdoc.CreateElement(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"Content"&lt;/span&gt;);&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;XmlElement
timeNode &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; xdoc.CreateElement(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"Time"&lt;/span&gt;);&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;XmlElement
ipNode &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; xdoc.CreateElement(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"IP"&lt;/span&gt;);&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;XmlElement
agentNode &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; xdoc.CreateElement(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"Agent"&lt;/span&gt;);&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;XmlElement
urlNode &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; xdoc.CreateElement(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"Url"&lt;/span&gt;);&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;XmlElement
referrerNode &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; xdoc.CreateElement(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"Referrer"&lt;/span&gt;);&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;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//
获取文本信息&lt;/span&gt;
&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;XmlText nameText &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; xdoc.CreateTextNode(UserName);&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;XmlText contentText &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; xdoc.CreateTextNode(Content);&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;XmlText timeText &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; xdoc.CreateTextNode(DateTime.Now.ToString());&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;XmlText ipText &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; xdoc.CreateTextNode(IP);&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;XmlText agentText &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; xdoc.CreateTextNode(Agent);&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;XmlText urlText &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; xdoc.CreateTextNode(Url);&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;XmlText referrerText &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; xdoc.CreateTextNode(UrlReferrer);&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//
将上面创建的各个存储信息的节点添加到guest节点下但并不包含最终的值&lt;/span&gt;
&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;parentNode.AppendChild(nameNode);&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;parentNode.AppendChild(contentNode);&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;parentNode.AppendChild(timeNode);&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;parentNode.AppendChild(ipNode);&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;parentNode.AppendChild(agentNode);&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;parentNode.AppendChild(urlNode);&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;parentNode.AppendChild(referrerNode);&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;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//
将上面获取的文本信息添加到与之相对应的节点中&lt;/span&gt;
&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;nameNode.AppendChild(nameText);&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;contentNode.AppendChild(contentText);&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;timeNode.AppendChild(timeText);&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;ipNode.AppendChild(ipText);&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;agentNode.AppendChild(agentText);&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;urlNode.AppendChild(urlText);&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;referrerNode.AppendChild(referrerText);&lt;br&gt;
&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;&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//
保存存储信息的XML文件&lt;/span&gt;
&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;xdoc.Save(filepath);&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;xdoc &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;null&lt;/span&gt;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
}&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
然后，我在我的Asp.Net站点的Global.asax.cs的Application_Error事件里加入以下代码：
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;WebLogs
Logs &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; WebLogs(Server.MapPath(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"logs/"&lt;/span&gt;));&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; referrerUri &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; (Request.UrlReferrer
!&lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;null&lt;/span&gt;)
?Request.UrlReferrer.AbsoluteUri : &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt;.Empty;&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt; UserName &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; (User.Identity.Name
!&lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;string&lt;/span&gt;.Empty)
? User.Identity.Name : &lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"Anonymous"&lt;/span&gt;;&lt;br&gt;
Logs.Add(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"Error"&lt;/span&gt;,UserName,Server.GetLastError().ToString(),Request.UserHostAddress,Request.UserAgent,Request.Url.AbsoluteUri,referrerUri);&lt;/span&gt;
&lt;/p&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.qihangnet.com"&gt;Qihangnet&lt;/a&gt;. </description>
      <comments>http://www.qihangnet.com/CommentView,guid,f06deeef-1027-45e6-b7aa-148977ff6b23.aspx</comments>
      <category>ASP.NET</category>
      <category>CSharp</category>
    </item>
    <item>
      <trackback:ping>http://www.qihangnet.com/Trackback.aspx?guid=dc75f628-7688-46e6-b642-a4aa3a7f1078</trackback:ping>
      <pingback:server>http://www.qihangnet.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.qihangnet.com/PermaLink,guid,dc75f628-7688-46e6-b642-a4aa3a7f1078.aspx</pingback:target>
      <dc:creator>衣明志</dc:creator>
      <wfw:comment>http://www.qihangnet.com/CommentView,guid,dc75f628-7688-46e6-b642-a4aa3a7f1078.aspx</wfw:comment>
      <wfw:commentRss>http://www.qihangnet.com/SyndicationService.asmx/GetEntryCommentsRss?guid=dc75f628-7688-46e6-b642-a4aa3a7f1078</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
    在博客园管理员<a href="http://dudu.cnblogs.com/">dudu</a>以及博客堂<a href="http://blog.joycode.com/joy/">开心就好</a>、<a href="http://blog.joycode.com/dotey/">宝玉</a>的支持和帮助下,烟台.NET
俱乐部也成立啦.<br />
    希望烟台、威海及其周边地区.NET爱好者能积极的加入.<br />
    希望加入此团队的博客园成员可以在本文的评论中回复或EmailTo : qihangnet(AT)hotmail.com。<br />
    请说明你的Blog帐号和所在城市，特长/兴趣(最好详细点)。 
</p>
        <p>
    继北京,上海，广州，杭州，郑州，济南等城市成立后。我们烟台也要努力了。<br />
    Let's Do Our Best!<br /><br />
烟台.Net俱乐部博客园团队Blog：<a href="http://www.cnblogs.com/team/dotsail.html">http://www.cnblogs.com/team/dotsail.html</a><br />
烟台.NET俱乐部官方网站：<a href="http://qihang.net">http://qihang.net</a><br />
烟台.NET俱乐部QQ群：6718824<br />
烟台.NET俱乐部博客园聊天室：<a href="http://chat.cnblogs.com/CuteSoft_Client/CuteChat/CH_MainForm.Aspx?ChannelId=45f4536b-39fc-44d5-af07-1715e7b2097e">http://chat.cnblogs.com/CuteSoft_Client/CuteChat/CH_MainForm.Aspx?ChannelId=45f4536b-39fc-44d5-af07-1715e7b2097e</a></p>
        <br />
        <hr />
This weblog is sponsored by <a href="http://www.qihangnet.com">Qihangnet</a>. 
</body>
      <title>烟台.NET俱乐部成立了</title>
      <guid isPermaLink="false">http://www.qihangnet.com/PermaLink,guid,dc75f628-7688-46e6-b642-a4aa3a7f1078.aspx</guid>
      <link>http://www.qihangnet.com/PermaLink,guid,dc75f628-7688-46e6-b642-a4aa3a7f1078.aspx</link>
      <pubDate>Thu, 28 Jul 2005 13:31:12 GMT</pubDate>
      <description>&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 在博客园管理员&lt;a href="http://dudu.cnblogs.com/"&gt;dudu&lt;/a&gt;以及博客堂&lt;a href="http://blog.joycode.com/joy/"&gt;开心就好&lt;/a&gt;、&lt;a href="http://blog.joycode.com/dotey/"&gt;宝玉&lt;/a&gt;的支持和帮助下,烟台.NET
俱乐部也成立啦.&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 希望烟台、威海及其周边地区.NET爱好者能积极的加入.&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 希望加入此团队的博客园成员可以在本文的评论中回复或EmailTo : qihangnet(AT)hotmail.com。&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 请说明你的Blog帐号和所在城市，特长/兴趣(最好详细点)。 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; 继北京,上海，广州，杭州，郑州，济南等城市成立后。我们烟台也要努力了。&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Let's Do Our Best!&lt;br&gt;
&lt;br&gt;
烟台.Net俱乐部博客园团队Blog：&lt;a href="http://www.cnblogs.com/team/dotsail.html"&gt;http://www.cnblogs.com/team/dotsail.html&lt;/a&gt;
&lt;br&gt;
烟台.NET俱乐部官方网站：&lt;a href="http://qihang.net"&gt;http://qihang.net&lt;/a&gt;
&lt;br&gt;
烟台.NET俱乐部QQ群：6718824&lt;br&gt;
烟台.NET俱乐部博客园聊天室：&lt;a href="http://chat.cnblogs.com/CuteSoft_Client/CuteChat/CH_MainForm.Aspx?ChannelId=45f4536b-39fc-44d5-af07-1715e7b2097e"&gt;http://chat.cnblogs.com/CuteSoft_Client/CuteChat/CH_MainForm.Aspx?ChannelId=45f4536b-39fc-44d5-af07-1715e7b2097e&lt;/a&gt;
&lt;/p&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.qihangnet.com"&gt;Qihangnet&lt;/a&gt;. </description>
      <comments>http://www.qihangnet.com/CommentView,guid,dc75f628-7688-46e6-b642-a4aa3a7f1078.aspx</comments>
      <category>ASP.NET</category>
      <category>CSharp</category>
      <category>WEBSERVICE</category>
    </item>
    <item>
      <trackback:ping>http://www.qihangnet.com/Trackback.aspx?guid=dbc7bd65-be31-4690-bc0a-e1df8d1cfd9c</trackback:ping>
      <pingback:server>http://www.qihangnet.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.qihangnet.com/PermaLink,guid,dbc7bd65-be31-4690-bc0a-e1df8d1cfd9c.aspx</pingback:target>
      <dc:creator>衣明志</dc:creator>
      <wfw:comment>http://www.qihangnet.com/CommentView,guid,dbc7bd65-be31-4690-bc0a-e1df8d1cfd9c.aspx</wfw:comment>
      <wfw:commentRss>http://www.qihangnet.com/SyndicationService.asmx/GetEntryCommentsRss?guid=dbc7bd65-be31-4690-bc0a-e1df8d1cfd9c</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
去年开发一个小型的网络系统时，编写了一个对指定目录的本地文件（实际上别人机器上共享文件也可以）进行遍历和I/O监控的控件，近来有人问及相关问题，就把他贴出来吧，很简单的程序，高手勿进哦
:）代码如下<br /></p>
        <p>
          <span style="COLOR: #000000">
            <span style="COLOR: #0000ff">using</span> System;<br /><span style="COLOR: #0000ff">using</span> System.Collections;<br /><span style="COLOR: #0000ff">using</span> System.ComponentModel;<br /><span style="COLOR: #0000ff">using</span> System.Drawing;<br /><span style="COLOR: #0000ff">using</span> System.Data;<br /><span style="COLOR: #0000ff">using</span> System.Windows.Forms;<br /><span style="COLOR: #0000ff">using</span> System.IO;<br /><span style="COLOR: #0000ff">using</span> System.Threading;<br /><span style="COLOR: #0000ff">namespace</span> MyFtpWatcherControlLibrary<br />
{<br />
 <span style="COLOR: #848284">///</span><span style="COLOR: #008200"> <br /></span><br />
 <span style="COLOR: #848284">///</span><span style="COLOR: #008200"> UserControl1 的摘要说明。<br /></span><br />
 <span style="COLOR: #848284">///</span><span style="COLOR: #008200"> <br /></span><br />
 <span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">class</span> FtpFileWatcher : System.Windows.Forms.UserControl<br />
 {<br />
  <span style="COLOR: #0000ff">private</span> System.IO.FileSystemWatcher fileSystemWatcher;<br />
  <span style="COLOR: #0000ff">private</span> System.Windows.Forms.TextBox textBoxWatch;<br />
  <span style="COLOR: #0000ff">private</span> <span style="COLOR: #0000ff">string</span> SerIP,SerPort,VFolder,str_found,dirs;<br />
  <span style="COLOR: #0000ff">private</span> <span style="COLOR: #0000ff">int</span> num_found_files;<br />
  <span style="COLOR: #0000ff">private</span> Thread thread_ergodic;<br />
  <br />
  <span style="COLOR: #848284">///</span><span style="COLOR: #008200"> <br /></span><br />
  <span style="COLOR: #848284">///</span><span style="COLOR: #008200"> 必需的设计器变量。<br /></span><br />
  <span style="COLOR: #848284">///</span><span style="COLOR: #008200"> <br /></span><br />
  <span style="COLOR: #0000ff">private</span> System.ComponentModel.Container components = <span style="COLOR: #0000ff">null</span>;<br />
  <span style="COLOR: #0000ff">public</span> FtpFileWatcher()<br />
  {<br />
   <span style="COLOR: #008200">// 该调用是 Windows.Forms 窗体设计器所必需的。<br /></span><br />
   InitializeComponent();<br />
   <span style="COLOR: #008200">// TODO: 在 InitComponent 调用后添加任何初始化<br /></span><br />
  }<br />
  <span style="COLOR: #848284">///</span><span style="COLOR: #008200"> <br /></span><br />
  <span style="COLOR: #848284">///</span><span style="COLOR: #008200"> 清理所有正在使用的资源。<br /></span><br />
  <span style="COLOR: #848284">///</span><span style="COLOR: #008200"> <br /></span><br />
  <span style="COLOR: #0000ff">protected</span> <span style="COLOR: #0000ff">override</span> <span style="COLOR: #0000ff">void</span> Dispose( <span style="COLOR: #0000ff">bool</span> disposing )<br />
  {<br />
   <span style="COLOR: #0000ff">if</span>( disposing )<br />
   {<br />
    <span style="COLOR: #0000ff">if</span>( components != <span style="COLOR: #0000ff">null</span> )<br />
     components.Dispose();<br />
   }<br />
   <span style="COLOR: #0000ff">base</span>.Dispose( disposing );<br />
  }<br />
  #region 组件设计器生成的代码<br />
  <span style="COLOR: #848284">///</span><span style="COLOR: #008200"> <br /></span><br />
  <span style="COLOR: #848284">///</span><span style="COLOR: #008200"> 设计器支持所需的方法 - 不要使用代码编辑器 <br /></span><br />
  <span style="COLOR: #848284">///</span><span style="COLOR: #008200"> 修改此方法的内容。<br /></span><br />
  <span style="COLOR: #848284">///</span><span style="COLOR: #008200"> <br /></span><br />
  <span style="COLOR: #0000ff">private</span> <span style="COLOR: #0000ff">void</span> InitializeComponent()<br />
  {<br />
   <span style="COLOR: #0000ff">this</span>.fileSystemWatcher = <span style="COLOR: #0000ff">new</span> System.IO.FileSystemWatcher();<br />
   <span style="COLOR: #0000ff">this</span>.textBoxWatch = <span style="COLOR: #0000ff">new</span> System.Windows.Forms.TextBox();<br />
   ((System.ComponentModel.ISupportInitialize)(<span style="COLOR: #0000ff">this</span>.fileSystemWatcher)).BeginInit();<br />
   <span style="COLOR: #0000ff">this</span>.SuspendLayout();<br />
   <span style="COLOR: #008200">// <br /></span><br />
   <span style="COLOR: #008200">// fileSystemWatcher<br /></span><br />
   <span style="COLOR: #008200">// <br /></span><br />
   <span style="COLOR: #0000ff">this</span>.fileSystemWatcher.IncludeSubdirectories = <span style="COLOR: #0000ff">true</span>;<br />
   <span style="COLOR: #0000ff">this</span>.fileSystemWatcher.NotifyFilter = ((System.IO.NotifyFilters)((System.IO.NotifyFilters.FileName | System.IO.NotifyFilters.DirectoryName)));<br />
   <span style="COLOR: #0000ff">this</span>.fileSystemWatcher.SynchronizingObject = <span style="COLOR: #0000ff">this</span>;<br />
   <span style="COLOR: #0000ff">this</span>.fileSystemWatcher.Deleted += <span style="COLOR: #0000ff">new</span> System.IO.FileSystemEventHandler(<span style="COLOR: #0000ff">this</span>.fileSystemWatcher_Changed);<br />
   <span style="COLOR: #0000ff">this</span>.fileSystemWatcher.Renamed += <span style="COLOR: #0000ff">new</span> System.IO.RenamedEventHandler(<span style="COLOR: #0000ff">this</span>.fileSystemWatcher_Renamed);<br />
   <span style="COLOR: #0000ff">this</span>.fileSystemWatcher.Changed += <span style="COLOR: #0000ff">new</span> System.IO.FileSystemEventHandler(<span style="COLOR: #0000ff">this</span>.fileSystemWatcher_Changed);<br />
   <span style="COLOR: #0000ff">this</span>.fileSystemWatcher.Created += <span style="COLOR: #0000ff">new</span> System.IO.FileSystemEventHandler(<span style="COLOR: #0000ff">this</span>.fileSystemWatcher_Changed);<br />
   <span style="COLOR: #008200">// <br /></span><br />
   <span style="COLOR: #008200">// textBoxWatch<br /></span><br />
   <span style="COLOR: #008200">// <br /></span><br />
   <span style="COLOR: #0000ff">this</span>.textBoxWatch.BackColor = System.Drawing.Color.White;<br />
   <span style="COLOR: #0000ff">this</span>.textBoxWatch.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;<br />
   <span style="COLOR: #0000ff">this</span>.textBoxWatch.Dock = System.Windows.Forms.DockStyle.Fill;<br />
   <span style="COLOR: #0000ff">this</span>.textBoxWatch.Location = <span style="COLOR: #0000ff">new</span> System.Drawing.Point(0, 0);<br />
   <span style="COLOR: #0000ff">this</span>.textBoxWatch.Multiline = <span style="COLOR: #0000ff">true</span>;<br />
   <span style="COLOR: #0000ff">this</span>.textBoxWatch.Name = <span style="COLOR: #848284">"textBoxWatch"</span>;<br />
   <span style="COLOR: #0000ff">this</span>.textBoxWatch.ReadOnly = <span style="COLOR: #0000ff">true</span>;<br />
   <span style="COLOR: #0000ff">this</span>.textBoxWatch.ScrollBars = System.Windows.Forms.ScrollBars.Both;<br />
   <span style="COLOR: #0000ff">this</span>.textBoxWatch.Size = <span style="COLOR: #0000ff">new</span> System.Drawing.Size(168, 144);<br />
   <span style="COLOR: #0000ff">this</span>.textBoxWatch.TabIndex = 0;<br />
   <span style="COLOR: #0000ff">this</span>.textBoxWatch.Text = <span style="COLOR: #848284">""</span>;<br />
   <span style="COLOR: #0000ff">this</span>.textBoxWatch.WordWrap = <span style="COLOR: #0000ff">false</span>;<br />
   <span style="COLOR: #008200">// <br /></span><br />
   <span style="COLOR: #008200">// FtpFileWatcher<br /></span><br />
   <span style="COLOR: #008200">// <br /></span><br />
   <span style="COLOR: #0000ff">this</span>.Controls.Add(<span style="COLOR: #0000ff">this</span>.textBoxWatch);<br />
   <span style="COLOR: #0000ff">this</span>.Name = <span style="COLOR: #848284">"FtpFileWatcher"</span>;<br />
   <span style="COLOR: #0000ff">this</span>.Size = <span style="COLOR: #0000ff">new</span> System.Drawing.Size(168, 144);<br />
   ((System.ComponentModel.ISupportInitialize)(<span style="COLOR: #0000ff">this</span>.fileSystemWatcher)).EndInit();<br />
   <span style="COLOR: #0000ff">this</span>.ResumeLayout(<span style="COLOR: #0000ff">false</span>);<br />
  }<br />
  #endregion<br />
  <span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">string</span> Watch_Text<span style="COLOR: #008200">//属性——监视结果<br /></span><br />
  {<br />
   <span style="COLOR: #008200">//用return方法返回该属性值<br /></span><br />
   get<br />
   {<br />
    <span style="COLOR: #0000ff">return</span> textBoxWatch.Text;<br />
   }<br />
   <span style="COLOR: #008200">//用set方法获得该属性值<br /></span><br />
   set<br />
   {<br />
    textBoxWatch.Text = value;<br />
   }<br />
  }<br />
  <span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">bool</span> Watch_Enable<span style="COLOR: #008200">//属性——是否监视<br /></span><br />
  {<br />
   get<br />
   {<br />
    <span style="COLOR: #0000ff">return</span> fileSystemWatcher.EnableRaisingEvents;<br />
   }<br />
   set<br />
   {<br />
    fileSystemWatcher.EnableRaisingEvents = value;<br />
   }<br />
  }<br />
  <span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">string</span> Watch_Filter<span style="COLOR: #008200">//属性——监视的文件模式类型<br /></span><br />
  {<br />
   get<br />
   {<br />
    <span style="COLOR: #0000ff">return</span> fileSystemWatcher.Filter;<br />
   }<br />
   set<br />
   {<br />
    fileSystemWatcher.Filter = value;<br />
   }<br />
  }<br />
  <span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">bool</span> Watch_IncludeSubdirectories<span style="COLOR: #008200">//属性——是否包含子目录<br /></span><br />
  {<br />
   get<br />
   {<br />
    <span style="COLOR: #0000ff">return</span> fileSystemWatcher.IncludeSubdirectories;<br />
   }<br />
   set<br />
   {<br />
    fileSystemWatcher.IncludeSubdirectories = value;<br />
   }<br />
  }<br />
  <span style="COLOR: #0000ff">public</span> NotifyFilters Watch_NotifyFilter<span style="COLOR: #008200">//属性——监视的更改事件的标志<br /></span><br />
  {<br />
   get<br />
   {<br />
    <span style="COLOR: #0000ff">return</span> fileSystemWatcher.NotifyFilter;<br />
   }<br />
   set<br />
   {<br />
    fileSystemWatcher.NotifyFilter = value;<br />
   }<br />
  }<br />
  <span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">string</span> Watch_Path<span style="COLOR: #008200">//属性——要监视的目录的路径<br /></span><br />
  {<br />
   get<br />
   {<br />
    <span style="COLOR: #0000ff">return</span> fileSystemWatcher.Path;<br />
   }<br />
   set<br />
   {<br />
    fileSystemWatcher.Path = value;<br />
   }<br />
  }<br />
  <span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">string</span> Watch_SerIP<span style="COLOR: #008200">//属性——要监视的服务器IP地址<br /></span><br />
  {<br />
   get<br />
   {<br />
    <span style="COLOR: #0000ff">return</span> SerIP;<br />
   }<br />
   set<br />
   {<br />
    SerIP = value;<br />
   }<br />
  }<br />
  <span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">string</span> Watch_Port<span style="COLOR: #008200">//属性——要监视的服务器端口<br /></span><br />
  {<br />
   get<br />
   {<br />
    <span style="COLOR: #0000ff">return</span> SerPort;<br />
   }<br />
   set<br />
   {<br />
    SerPort = value;<br />
   }<br />
  }<br />
  <span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">string</span> Watch_VFloder<span style="COLOR: #008200">//属性——要监视的目录对应服务器的虚拟目录<br /></span><br />
  {<br />
   get<br />
   {<br />
    <span style="COLOR: #0000ff">return</span> VFolder;<br />
   }<br />
   set<br />
   {<br />
    VFolder = value;<br />
   }<br />
  }<br />
  <span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">string</span> Str_FindFiles<span style="COLOR: #008200">//属性——遍历出的文件结果<br /></span><br />
  {<br />
   get<br />
   {<br />
    <span style="COLOR: #0000ff">return</span> str_found;<br />
   }<br />
   set<br />
   {<br />
    str_found = value;<br />
   }<br />
  }<br />
  <span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">string</span> Str_FindDir<span style="COLOR: #008200">//属性——正在遍历的目录<br /></span><br />
  {<br />
   get<br />
   {<br />
    <span style="COLOR: #0000ff">return</span> dirs;<br />
   }<br />
   set<br />
   {<br />
    dirs = value;<br />
   }<br />
  }<br />
  <span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">int</span> Num_FindFiles<span style="COLOR: #008200">//属性——遍历出文件的数目<br /></span><br />
  {<br />
   get<br />
   {<br />
    <span style="COLOR: #0000ff">return</span> num_found_files;<br />
   }<br />
   set<br />
   {<br />
    num_found_files = value;<br />
   }<br />
  }<br />
  <span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">bool</span> FindFiles_Enable<span style="COLOR: #008200">//属性——遍历状态，true为正在遍历，False为遍历完毕,该属性为只读属性<br /></span><br />
  {<br />
   get<br />
   {<br />
    <span style="COLOR: #0000ff">return</span> thread_ergodic.IsAlive;<br />
   }<br />
  }<br />
  <span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">void</span> FindEveryFile(<span style="COLOR: #0000ff">string</span> str_control)<span style="COLOR: #008200">//方法——遍历的控制：Find为开始遍历标示，其他为停止遍历标示<br /></span><br />
  {<br />
   <span style="COLOR: #0000ff">if</span>(str_control == <span style="COLOR: #848284">"Find"</span>)<br />
   {<br />
    num_found_files = 0;<br />
    str_found = <span style="COLOR: #848284">""</span>;<br />
    dirs = fileSystemWatcher.Path.Trim();<br />
    VFolder = VFolder.Trim();<br />
    <span style="COLOR: #0000ff">if</span>(VFolder.Length == 0 || VFolder ==<span style="COLOR: #848284">"/"</span>)<br />
    {<br />
     VFolder = <span style="COLOR: #848284">""</span>;<br />
    }<br />
    <span style="COLOR: #0000ff">else</span><br />
    {<br />
     <span style="COLOR: #0000ff">if</span>(VFolder.Substring(0,1) != <span style="COLOR: #848284">"/"</span>)<br />
     {<br />
      VFolder = <span style="COLOR: #848284">"/"</span> + VFolder;<br />
     }<br />
     <span style="COLOR: #0000ff">if</span>(VFolder.Substring(VFolder.Length - 1,1) == <span style="COLOR: #848284">"/"</span>)<br />
     {<br />
      VFolder = VFolder.Remove(VFolder.Length - 1,1);<br />
     }<br />
    }<br />
    thread_ergodic = <span style="COLOR: #0000ff">new</span> Thread(<span style="COLOR: #0000ff">new</span> ThreadStart(files_ergodic));<br />
    thread_ergodic.IsBackground = <span style="COLOR: #0000ff">true</span>;<br />
    thread_ergodic.Start();<br />
   }<br />
   <span style="COLOR: #0000ff">else</span><br />
   {<br />
    <span style="COLOR: #0000ff">if</span>(thread_ergodic.IsAlive)<br />
    {<br />
     <span style="COLOR: #0000ff">try</span><br />
     {<br />
      thread_ergodic.Abort();<br />
     }<br />
     <span style="COLOR: #0000ff">catch</span><br />
     {<br />
      thread_ergodic.Join();<br />
     }<br />
    }<br />
   }<br />
  }<br />
  <span style="COLOR: #0000ff">private</span> <span style="COLOR: #0000ff">void</span> files_ergodic() <span style="COLOR: #008200">//文件遍历线程<br /></span><br />
  {<br />
   <span style="COLOR: #0000ff">string</span>[] files;<br />
   <span style="COLOR: #0000ff">string</span> fTemp;<br />
   <br />
   files=Directory.GetFiles(dirs);<span style="COLOR: #008200">//获取当前目录的所有文件名<br /></span><br />
   <span style="COLOR: #0000ff">foreach</span>(<span style="COLOR: #0000ff">string</span> f <span style="COLOR: #0000ff">in</span> files)<br />
   {<br />
    fTemp = f.Remove(0,fileSystemWatcher.Path.Length);<br />
    fTemp = fTemp.Replace(<span style="COLOR: #848284">"\\"</span>,<span style="COLOR: #848284">"/"</span>);<br />
    <span style="COLOR: #0000ff">if</span>(fTemp.Substring(0,1) !=<span style="COLOR: #848284">"/"</span>)<br />
    {<br />
     fTemp=<span style="COLOR: #848284">"/"</span> + fTemp;<br />
    }<br />
    <span style="COLOR: #0000ff">if</span>(fTemp.Length &lt; 9 || fTemp.Substring(fTemp.Length-9,9)!=<span style="COLOR: #848284">"Thumbs.db"</span>)<br />
    {<br />
     str_found = fTemp + <span style="COLOR: #848284">"\r\n"</span> + str_found;<br />
     num_found_files = num_found_files + 1;<br />
    }<br />
   }<br />
   <br />
   files=Directory.GetDirectories(dirs);<span style="COLOR: #008200">//获取当前目录内的子目录名<br /></span><br />
   <span style="COLOR: #0000ff">foreach</span>(<span style="COLOR: #0000ff">string</span> f <span style="COLOR: #0000ff">in</span> files)<br />
   {<br />
    fTemp = f.Remove(0,fileSystemWatcher.Path.Length);<br />
    fTemp = fTemp.Replace(<span style="COLOR: #848284">"\\"</span>,<span style="COLOR: #848284">"/"</span>);<br />
    <span style="COLOR: #0000ff">if</span>(fTemp.Substring(0,1) !=<span style="COLOR: #848284">"/"</span>)<br />
    {<br />
     fTemp=<span style="COLOR: #848284">"/"</span> + fTemp;<br />
    }<br />
    <span style="COLOR: #0000ff">if</span>(fTemp!=<span style="COLOR: #848284">"/System Volume Information"</span> &amp;&amp; fTemp!=<span style="COLOR: #848284">"/Recycled"</span>) <span style="COLOR: #008200">//去除回收站和系统卷信息文件夹<br /></span><br />
    {<br />
     dirs = f;<br />
     files_ergodic();<span style="COLOR: #008200">//递归调用<br /></span><br />
    }<br />
    Thread.Sleep(0);<br />
   }<br />
  }<br />
  <span style="COLOR: #0000ff">private</span> <span style="COLOR: #0000ff">void</span> fileSystemWatcher_Changed(<span style="COLOR: #0000ff">object</span> sender, System.IO.FileSystemEventArgs e)<br />
  {<br />
   <span style="COLOR: #0000ff">string</span> strTemp;<br />
   strTemp = e.Name + <span style="COLOR: #848284">" "</span> + e.ChangeType;<br />
   strTemp = <span style="COLOR: #848284">"/"</span> + strTemp.Replace(<span style="COLOR: #848284">"\\"</span>,<span style="COLOR: #848284">"/"</span>);<br />
   <span style="COLOR: #0000ff">if</span>(e.Name!=<span style="COLOR: #848284">"/System Volume Information"</span> &amp;&amp; e.Name!=<span style="COLOR: #848284">"/Recycled"</span>)<br />
   {<br />
    textBoxWatch.Text = strTemp + <span style="COLOR: #848284">"\r\n"</span> + textBoxWatch.Text;<br />
   }<br />
  }<br />
  <span style="COLOR: #0000ff">private</span> <span style="COLOR: #0000ff">void</span> fileSystemWatcher_Renamed(<span style="COLOR: #0000ff">object</span> sender, System.IO.RenamedEventArgs e)<br />
  {<br />
   <span style="COLOR: #0000ff">string</span> strTemp;<br />
   strTemp = e.OldName + <span style="COLOR: #848284">" "</span> + e.ChangeType + <span style="COLOR: #848284">" /"</span> + e.Name;<br />
   strTemp = <span style="COLOR: #848284">"/"</span> + strTemp.Replace(<span style="COLOR: #848284">"\\"</span>,<span style="COLOR: #848284">"/"</span>);<br />
   textBoxWatch.Text = strTemp + <span style="COLOR: #848284">"\r\n"</span> + textBoxWatch.Text;<br />
  }<br />
 }<br />
}</span>
          <br />
        </p>
        <br />
        <hr />
This weblog is sponsored by <a href="http://www.qihangnet.com">Qihangnet</a>. 
</body>
      <title>对本地文件进行监控的控件C#源码</title>
      <guid isPermaLink="false">http://www.qihangnet.com/PermaLink,guid,dbc7bd65-be31-4690-bc0a-e1df8d1cfd9c.aspx</guid>
      <link>http://www.qihangnet.com/PermaLink,guid,dbc7bd65-be31-4690-bc0a-e1df8d1cfd9c.aspx</link>
      <pubDate>Thu, 19 May 2005 14:06:47 GMT</pubDate>
      <description>&lt;p&gt;
去年开发一个小型的网络系统时，编写了一个对指定目录的本地文件（实际上别人机器上共享文件也可以）进行遍历和I/O监控的控件，近来有人问及相关问题，就把他贴出来吧，很简单的程序，高手勿进哦
:）代码如下&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Collections;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.ComponentModel;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Drawing;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Data;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Windows.Forms;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.IO;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Threading;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;namespace&lt;/span&gt;&amp;nbsp;MyFtpWatcherControlLibrary&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&lt;span style="COLOR: #848284"&gt;///&lt;/span&gt;&lt;span style="COLOR: #008200"&gt;&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&lt;span style="COLOR: #848284"&gt;///&lt;/span&gt;&lt;span style="COLOR: #008200"&gt;&amp;nbsp;UserControl1&amp;nbsp;的摘要说明。&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&lt;span style="COLOR: #848284"&gt;///&lt;/span&gt;&lt;span style="COLOR: #008200"&gt;&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;FtpFileWatcher&amp;nbsp;:&amp;nbsp;System.Windows.Forms.UserControl&lt;br&gt;
&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt;&amp;nbsp;System.IO.FileSystemWatcher&amp;nbsp;fileSystemWatcher;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt;&amp;nbsp;System.Windows.Forms.TextBox&amp;nbsp;textBoxWatch;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;SerIP,SerPort,VFolder,str_found,dirs;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&amp;nbsp;num_found_files;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt;&amp;nbsp;Thread&amp;nbsp;thread_ergodic;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #848284"&gt;///&lt;/span&gt;&lt;span style="COLOR: #008200"&gt;&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #848284"&gt;///&lt;/span&gt;&lt;span style="COLOR: #008200"&gt;&amp;nbsp;必需的设计器变量。&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #848284"&gt;///&lt;/span&gt;&lt;span style="COLOR: #008200"&gt;&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt;&amp;nbsp;System.ComponentModel.Container&amp;nbsp;components&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;null&lt;/span&gt;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;FtpFileWatcher()&lt;br&gt;
&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;该调用是&amp;nbsp;Windows.Forms&amp;nbsp;窗体设计器所必需的。&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;InitializeComponent();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;TODO:&amp;nbsp;在&amp;nbsp;InitComponent&amp;nbsp;调用后添加任何初始化&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #848284"&gt;///&lt;/span&gt;&lt;span style="COLOR: #008200"&gt;&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #848284"&gt;///&lt;/span&gt;&lt;span style="COLOR: #008200"&gt;&amp;nbsp;清理所有正在使用的资源。&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #848284"&gt;///&lt;/span&gt;&lt;span style="COLOR: #008200"&gt;&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;protected&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;override&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Dispose(&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;bool&lt;/span&gt;&amp;nbsp;disposing&amp;nbsp;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;(&amp;nbsp;disposing&amp;nbsp;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;(&amp;nbsp;components&amp;nbsp;!=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;null&lt;/span&gt;&amp;nbsp;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;components.Dispose();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;base&lt;/span&gt;.Dispose(&amp;nbsp;disposing&amp;nbsp;);&lt;br&gt;
&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;#region&amp;nbsp;组件设计器生成的代码&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #848284"&gt;///&lt;/span&gt;&lt;span style="COLOR: #008200"&gt;&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #848284"&gt;///&lt;/span&gt;&lt;span style="COLOR: #008200"&gt;&amp;nbsp;设计器支持所需的方法&amp;nbsp;-&amp;nbsp;不要使用代码编辑器&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #848284"&gt;///&lt;/span&gt;&lt;span style="COLOR: #008200"&gt;&amp;nbsp;修改此方法的内容。&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #848284"&gt;///&lt;/span&gt;&lt;span style="COLOR: #008200"&gt;&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;InitializeComponent()&lt;br&gt;
&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.fileSystemWatcher&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;System.IO.FileSystemWatcher();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.textBoxWatch&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;System.Windows.Forms.TextBox();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;((System.ComponentModel.ISupportInitialize)(&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.fileSystemWatcher)).BeginInit();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.SuspendLayout();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;fileSystemWatcher&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.fileSystemWatcher.IncludeSubdirectories&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;true&lt;/span&gt;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.fileSystemWatcher.NotifyFilter&amp;nbsp;=&amp;nbsp;((System.IO.NotifyFilters)((System.IO.NotifyFilters.FileName&amp;nbsp;|&amp;nbsp;System.IO.NotifyFilters.DirectoryName)));&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.fileSystemWatcher.SynchronizingObject&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.fileSystemWatcher.Deleted&amp;nbsp;+=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;System.IO.FileSystemEventHandler(&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.fileSystemWatcher_Changed);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.fileSystemWatcher.Renamed&amp;nbsp;+=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;System.IO.RenamedEventHandler(&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.fileSystemWatcher_Renamed);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.fileSystemWatcher.Changed&amp;nbsp;+=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;System.IO.FileSystemEventHandler(&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.fileSystemWatcher_Changed);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.fileSystemWatcher.Created&amp;nbsp;+=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;System.IO.FileSystemEventHandler(&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.fileSystemWatcher_Changed);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;textBoxWatch&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.textBoxWatch.BackColor&amp;nbsp;=&amp;nbsp;System.Drawing.Color.White;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.textBoxWatch.BorderStyle&amp;nbsp;=&amp;nbsp;System.Windows.Forms.BorderStyle.FixedSingle;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.textBoxWatch.Dock&amp;nbsp;=&amp;nbsp;System.Windows.Forms.DockStyle.Fill;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.textBoxWatch.Location&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;System.Drawing.Point(0,&amp;nbsp;0);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.textBoxWatch.Multiline&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;true&lt;/span&gt;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.textBoxWatch.Name&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"textBoxWatch"&lt;/span&gt;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.textBoxWatch.ReadOnly&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;true&lt;/span&gt;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.textBoxWatch.ScrollBars&amp;nbsp;=&amp;nbsp;System.Windows.Forms.ScrollBars.Both;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.textBoxWatch.Size&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;System.Drawing.Size(168,&amp;nbsp;144);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.textBoxWatch.TabIndex&amp;nbsp;=&amp;nbsp;0;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.textBoxWatch.Text&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;""&lt;/span&gt;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.textBoxWatch.WordWrap&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;false&lt;/span&gt;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;FtpFileWatcher&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.Controls.Add(&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.textBoxWatch);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.Name&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"FtpFileWatcher"&lt;/span&gt;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.Size&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;System.Drawing.Size(168,&amp;nbsp;144);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;((System.ComponentModel.ISupportInitialize)(&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.fileSystemWatcher)).EndInit();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.ResumeLayout(&lt;span style="COLOR: #0000ff"&gt;false&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;#endregion&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;Watch_Text&lt;span style="COLOR: #008200"&gt;//属性——监视结果&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #008200"&gt;//用return方法返回该属性值&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;get&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&amp;nbsp;textBoxWatch.Text;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #008200"&gt;//用set方法获得该属性值&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;set&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;textBoxWatch.Text&amp;nbsp;=&amp;nbsp;value;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;bool&lt;/span&gt;&amp;nbsp;Watch_Enable&lt;span style="COLOR: #008200"&gt;//属性——是否监视&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;get&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&amp;nbsp;fileSystemWatcher.EnableRaisingEvents;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;set&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fileSystemWatcher.EnableRaisingEvents&amp;nbsp;=&amp;nbsp;value;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;Watch_Filter&lt;span style="COLOR: #008200"&gt;//属性——监视的文件模式类型&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;get&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&amp;nbsp;fileSystemWatcher.Filter;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;set&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fileSystemWatcher.Filter&amp;nbsp;=&amp;nbsp;value;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;bool&lt;/span&gt;&amp;nbsp;Watch_IncludeSubdirectories&lt;span style="COLOR: #008200"&gt;//属性——是否包含子目录&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;get&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&amp;nbsp;fileSystemWatcher.IncludeSubdirectories;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;set&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fileSystemWatcher.IncludeSubdirectories&amp;nbsp;=&amp;nbsp;value;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;NotifyFilters&amp;nbsp;Watch_NotifyFilter&lt;span style="COLOR: #008200"&gt;//属性——监视的更改事件的标志&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;get&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&amp;nbsp;fileSystemWatcher.NotifyFilter;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;set&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fileSystemWatcher.NotifyFilter&amp;nbsp;=&amp;nbsp;value;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;Watch_Path&lt;span style="COLOR: #008200"&gt;//属性——要监视的目录的路径&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;get&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&amp;nbsp;fileSystemWatcher.Path;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;set&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fileSystemWatcher.Path&amp;nbsp;=&amp;nbsp;value;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;Watch_SerIP&lt;span style="COLOR: #008200"&gt;//属性——要监视的服务器IP地址&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;get&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&amp;nbsp;SerIP;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;set&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SerIP&amp;nbsp;=&amp;nbsp;value;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;Watch_Port&lt;span style="COLOR: #008200"&gt;//属性——要监视的服务器端口&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;get&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&amp;nbsp;SerPort;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;set&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SerPort&amp;nbsp;=&amp;nbsp;value;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;Watch_VFloder&lt;span style="COLOR: #008200"&gt;//属性——要监视的目录对应服务器的虚拟目录&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;get&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&amp;nbsp;VFolder;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;set&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VFolder&amp;nbsp;=&amp;nbsp;value;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;Str_FindFiles&lt;span style="COLOR: #008200"&gt;//属性——遍历出的文件结果&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;get&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&amp;nbsp;str_found;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;set&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;str_found&amp;nbsp;=&amp;nbsp;value;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;Str_FindDir&lt;span style="COLOR: #008200"&gt;//属性——正在遍历的目录&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;get&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&amp;nbsp;dirs;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;set&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dirs&amp;nbsp;=&amp;nbsp;value;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&amp;nbsp;Num_FindFiles&lt;span style="COLOR: #008200"&gt;//属性——遍历出文件的数目&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;get&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&amp;nbsp;num_found_files;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;set&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;num_found_files&amp;nbsp;=&amp;nbsp;value;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;bool&lt;/span&gt;&amp;nbsp;FindFiles_Enable&lt;span style="COLOR: #008200"&gt;//属性——遍历状态，true为正在遍历，False为遍历完毕,该属性为只读属性&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;get&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&amp;nbsp;thread_ergodic.IsAlive;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;FindEveryFile(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;str_control)&lt;span style="COLOR: #008200"&gt;//方法——遍历的控制：Find为开始遍历标示，其他为停止遍历标示&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;(str_control&amp;nbsp;==&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"Find"&lt;/span&gt;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;num_found_files&amp;nbsp;=&amp;nbsp;0;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;str_found&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;""&lt;/span&gt;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dirs&amp;nbsp;=&amp;nbsp;fileSystemWatcher.Path.Trim();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VFolder&amp;nbsp;=&amp;nbsp;VFolder.Trim();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;(VFolder.Length&amp;nbsp;==&amp;nbsp;0&amp;nbsp;||&amp;nbsp;VFolder&amp;nbsp;==&lt;span style="COLOR: #848284"&gt;"/"&lt;/span&gt;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VFolder&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;""&lt;/span&gt;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;else&lt;/span&gt; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;(VFolder.Substring(0,1)&amp;nbsp;!=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"/"&lt;/span&gt;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VFolder&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"/"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;VFolder;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;(VFolder.Substring(VFolder.Length&amp;nbsp;-&amp;nbsp;1,1)&amp;nbsp;==&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"/"&lt;/span&gt;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;VFolder&amp;nbsp;=&amp;nbsp;VFolder.Remove(VFolder.Length&amp;nbsp;-&amp;nbsp;1,1);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;thread_ergodic&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;Thread(&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;ThreadStart(files_ergodic));&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;thread_ergodic.IsBackground&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;true&lt;/span&gt;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;thread_ergodic.Start();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;else&lt;/span&gt; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;(thread_ergodic.IsAlive)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;try&lt;/span&gt; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;thread_ergodic.Abort();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;catch&lt;/span&gt; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;thread_ergodic.Join();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;files_ergodic()&amp;nbsp;&lt;span style="COLOR: #008200"&gt;//文件遍历线程&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;[]&amp;nbsp;files;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;fTemp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;files=Directory.GetFiles(dirs);&lt;span style="COLOR: #008200"&gt;//获取当前目录的所有文件名&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;foreach&lt;/span&gt;(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;f&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&amp;nbsp;files)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fTemp&amp;nbsp;=&amp;nbsp;f.Remove(0,fileSystemWatcher.Path.Length);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fTemp&amp;nbsp;=&amp;nbsp;fTemp.Replace(&lt;span style="COLOR: #848284"&gt;"\\"&lt;/span&gt;,&lt;span style="COLOR: #848284"&gt;"/"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;(fTemp.Substring(0,1)&amp;nbsp;!=&lt;span style="COLOR: #848284"&gt;"/"&lt;/span&gt;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fTemp=&lt;span style="COLOR: #848284"&gt;"/"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;fTemp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;(fTemp.Length&amp;nbsp;&amp;lt;&amp;nbsp;9&amp;nbsp;||&amp;nbsp;fTemp.Substring(fTemp.Length-9,9)!=&lt;span style="COLOR: #848284"&gt;"Thumbs.db"&lt;/span&gt;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;str_found&amp;nbsp;=&amp;nbsp;fTemp&amp;nbsp;+&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"\r\n"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;str_found;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;num_found_files&amp;nbsp;=&amp;nbsp;num_found_files&amp;nbsp;+&amp;nbsp;1;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;files=Directory.GetDirectories(dirs);&lt;span style="COLOR: #008200"&gt;//获取当前目录内的子目录名&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;foreach&lt;/span&gt;(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;f&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&amp;nbsp;files)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fTemp&amp;nbsp;=&amp;nbsp;f.Remove(0,fileSystemWatcher.Path.Length);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fTemp&amp;nbsp;=&amp;nbsp;fTemp.Replace(&lt;span style="COLOR: #848284"&gt;"\\"&lt;/span&gt;,&lt;span style="COLOR: #848284"&gt;"/"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;(fTemp.Substring(0,1)&amp;nbsp;!=&lt;span style="COLOR: #848284"&gt;"/"&lt;/span&gt;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fTemp=&lt;span style="COLOR: #848284"&gt;"/"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;fTemp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;(fTemp!=&lt;span style="COLOR: #848284"&gt;"/System&amp;nbsp;Volume&amp;nbsp;Information"&lt;/span&gt;&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;fTemp!=&lt;span style="COLOR: #848284"&gt;"/Recycled"&lt;/span&gt;)&amp;nbsp;&lt;span style="COLOR: #008200"&gt;//去除回收站和系统卷信息文件夹&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dirs&amp;nbsp;=&amp;nbsp;f;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;files_ergodic();&lt;span style="COLOR: #008200"&gt;//递归调用&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Thread.Sleep(0);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;fileSystemWatcher_Changed(&lt;span style="COLOR: #0000ff"&gt;object&lt;/span&gt;&amp;nbsp;sender,&amp;nbsp;System.IO.FileSystemEventArgs&amp;nbsp;e)&lt;br&gt;
&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;strTemp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;strTemp&amp;nbsp;=&amp;nbsp;e.Name&amp;nbsp;+&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"&amp;nbsp;"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;e.ChangeType;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;strTemp&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"/"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;strTemp.Replace(&lt;span style="COLOR: #848284"&gt;"\\"&lt;/span&gt;,&lt;span style="COLOR: #848284"&gt;"/"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;(e.Name!=&lt;span style="COLOR: #848284"&gt;"/System&amp;nbsp;Volume&amp;nbsp;Information"&lt;/span&gt;&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;e.Name!=&lt;span style="COLOR: #848284"&gt;"/Recycled"&lt;/span&gt;)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;textBoxWatch.Text&amp;nbsp;=&amp;nbsp;strTemp&amp;nbsp;+&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"\r\n"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;textBoxWatch.Text;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;fileSystemWatcher_Renamed(&lt;span style="COLOR: #0000ff"&gt;object&lt;/span&gt;&amp;nbsp;sender,&amp;nbsp;System.IO.RenamedEventArgs&amp;nbsp;e)&lt;br&gt;
&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;strTemp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;strTemp&amp;nbsp;=&amp;nbsp;e.OldName&amp;nbsp;+&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"&amp;nbsp;"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;e.ChangeType&amp;nbsp;+&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"&amp;nbsp;/"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;e.Name;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;strTemp&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"/"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;strTemp.Replace(&lt;span style="COLOR: #848284"&gt;"\\"&lt;/span&gt;,&lt;span style="COLOR: #848284"&gt;"/"&lt;/span&gt;);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;textBoxWatch.Text&amp;nbsp;=&amp;nbsp;strTemp&amp;nbsp;+&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"\r\n"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;textBoxWatch.Text;&lt;br&gt;
&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&amp;nbsp;}&lt;br&gt;
}&lt;/span&gt; 
&lt;br&gt;
&lt;/p&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.qihangnet.com"&gt;Qihangnet&lt;/a&gt;. </description>
      <comments>http://www.qihangnet.com/CommentView,guid,dbc7bd65-be31-4690-bc0a-e1df8d1cfd9c.aspx</comments>
      <category>CSharp</category>
    </item>
    <item>
      <trackback:ping>http://www.qihangnet.com/Trackback.aspx?guid=f5766311-2603-4dc7-9989-c16c95832f3e</trackback:ping>
      <pingback:server>http://www.qihangnet.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.qihangnet.com/PermaLink,guid,f5766311-2603-4dc7-9989-c16c95832f3e.aspx</pingback:target>
      <dc:creator>衣明志</dc:creator>
      <wfw:comment>http://www.qihangnet.com/CommentView,guid,f5766311-2603-4dc7-9989-c16c95832f3e.aspx</wfw:comment>
      <wfw:commentRss>http://www.qihangnet.com/SyndicationService.asmx/GetEntryCommentsRss?guid=f5766311-2603-4dc7-9989-c16c95832f3e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Cω是微软研究院对下一代语言的探索。它扩展了C#的功能，更好的支持数据访问(SQL和XML)和并发控制。<br />
Cω的希望能方便的开发出更加可靠且维护性更好的软件，其中一个重要的概念就是"尽早的发现错误"。<br />
在下面的一个数据库查询的例子中将很好的体现出这一点。 
<p>
现在我想得到一个在某个城市的员工名字的列表。(就使用SQL-Server预装的Northwind数据库)<br />
下面给出最简单的实现：<br />
 <br />
       <span class="code"><strong><font face="Courier New" color="#3366ff"> 
SqlDataAdapter da = new SqlDataAdapter(<br />
      "SELECT * FROM Employees WHERE City='"+city+"'", nwindConn
);<br />
DataSet ds = new DataSet();<br />
      da.Fill(ds,"Employees");<br /></font></strong></span><span class="code"><strong><font face="Courier New" color="#3366ff">     
foreach (DataRow dr in ds.Tables["Employees"].Rows)<br />
      {<br />
            string name = dr["LastName"].ToString();<br />
int id = (int)dr["EmployeeID"];<br />
            Console.WriteLine(
id + ": " + name);<br />
      } </font></strong></span></p><p>
让我们来看看有哪些地方容易出错：<br />
1. city参数可能会被SQL注入攻击利用.<br />
2. 数据类型是弱类型，需要强制转换类型，容易出现Runtime error.<br />
3. 表名和列名都是文字，不是类型变量。编译器无法做检查，容易出现Runtime error.<br />
   (想必不少人碰到过写错表名，导致数据库访问出错，而debug n久的事情.)<br />
4. 查询语句也是文字，同样无法通过编译检查是否出错，容易出现Runtime error.
</p><p>
通过使用SqlParameters以及Typed DataSet我们可以避免前三个问题<br />
         <span class="code"><strong><font face="Courier New" color="#3366ff"> SqlDataAdapter
da = new SqlDataAdapter(<br />
            "SELECT * FROM
Employees WHERE City= @city", nwindConn );<br />
      SqlParameter cityParam = da.SelectCommand.Parameters.Add("@city",
SqlDbType.VarChar, 80);<br />
      cityParam.Value = city;<br />
      NorthwindDataSet ds = new NorthwindDataSet();<br />
      da.Fill(ds, ds.Employees.TableName );<br />
      foreach (NorthwindDataSet.EmployeesRow dr in ds.Employees.Rows)<br />
      {<br />
            string name = dr.LastName;<br /></font></strong></span><span class="code"><strong><font face="Courier New" color="#3366ff">           
int id = dr.EmployeeID;<br />
            Console.WriteLine(
id + ": " + name);<br />
      }</font></strong></span></p><p>
但是第四个问题仍没有解决。也许你想到了 SQL stored procedure，就像下面这样：    
</p><p><span class="code"><font face="Courier New" color="#3366ff"><strong>    
 CREATE PROCEDURE EmployeesForCity<br />
      @City nvarchar(80)  AS<br />
      SELECT EmployeeID, LastName FROM Employees WHERE City =
@City</strong></font></span></p><p><span class="code"><br /><strong><font face="Courier New" color="#3366ff">       SqlCommand
cmd = new SqlCommand( "dbo.EmployeesForCity", nwindConn );<br />
      cmd.CommandType = CommandType.StoredProcedure;<br />
      SqlParameter cityParam = cmd.Parameters.Add("@city",
SqlDbType.VarChar, 80);<br />
      cityParam.Value = city;<br />
      SqlDataAdapter da = new SqlDataAdapter( cmd );<br />
      NorthwindDataSet ds = new NorthwindDataSet();<br />
      da.Fill(ds, ds.EmployeesForCity.TableName );<br />
      foreach (NorthwindDataSet.EmployeesForCityRow dr in
ds.EmployeesForCity.Rows)<br />
      {<br />
            string name = dr.LastName;<br />
            int id = dr.EmployeeID;<br />
            Console.WriteLine(
id + ": " + name);<br />
      }<br /></font></strong></span></p><p>
SQL查询语句虽然不能在编译器检查，但是至少我们可以先在SQL-server中验证stored procedure，<br />
再运行我们的程序,比Runtime error好多了。但是万一stored procedure改了，或者是数据库改了，<br />
那我们又会看到Runtime error。问题的根本在于我们的代码和数据库的联系实在是太弱了。对于一<br />
个小程序就如此容易出现问题，那么对于那种和数据库紧密联系的大型应用就更别谈了。
</p><p>
再来看看C-omega的解决方案：<br />
    <span class="code"><strong><font face="Courier New" color="#3366ff">  
 rows = select * from DB.Employees where City == city;             
<br />
      foreach( row in rows ) 
<br />
      {<br />
            string name = row.LastName.Value;<br />
            int id = row.EmployeeID.Value;<br />
            Console.WriteLine(
id.ToString() + ": " + name);<br />
      }<br /></font></strong></span></p><p>
以上代码需要引起注意的地方:<br />
1. 可以将本地变量city直接放入SQL语句，不会被SQL注入攻击。<br />
2. 结果集是强类型的，意味着在程序编译的时候我们就知道数据库的结构，甚至可以使用VS.net<br />
所带的智能感知(自动完成)功能。<br />
3. 在rows以及row前面甚至没有使用类型名，而它们却都是强类型的。<br />
4. 不再含有文字类型的信息，避免了人为输入错误。<br />
5. 在程序编译的时候就已经和数据库连接，当数据库发生变化的时候，在编译器就会报错。
</p><p>
如果你不喜欢SQL的语法，你甚至用三行代码就能搞定以上所有任务。<br />
   <span class="code"><strong><font face="Courier New" color="#3366ff">DB.Employees
[City==city].{ <br />
     Console.WriteLine( it.EmployeeID + ": " + t.LastName
);<br />
      };<br /></font></strong></span></p><p>
从c++到C#我们常听见的一句话就是c＃是类型安全的。何谓类型安全？就是.Net Runtime支持编译期的类型检查。也就是尽量让Runtime error变成Compile
error，可以看出Cω在这个方面更进了一步。
</p><p>
注：鉴于个人水平以及资料方面的原因对其内部机制实现笔者并为做深入研究。
</p><br /><hr />
This weblog is sponsored by <a href="http://www.qihangnet.com">Qihangnet</a>. 
</body>
      <title>C-omega vs ADO.net </title>
      <guid isPermaLink="false">http://www.qihangnet.com/PermaLink,guid,f5766311-2603-4dc7-9989-c16c95832f3e.aspx</guid>
      <link>http://www.qihangnet.com/PermaLink,guid,f5766311-2603-4dc7-9989-c16c95832f3e.aspx</link>
      <pubDate>Tue, 05 Apr 2005 03:24:39 GMT</pubDate>
      <description>Cω是微软研究院对下一代语言的探索。它扩展了C#的功能，更好的支持数据访问(SQL和XML)和并发控制。&lt;br&gt;
Cω的希望能方便的开发出更加可靠且维护性更好的软件，其中一个重要的概念就是"尽早的发现错误"。&lt;br&gt;
在下面的一个数据库查询的例子中将很好的体现出这一点。 
&lt;p&gt;
现在我想得到一个在某个城市的员工名字的列表。(就使用SQL-Server预装的Northwind数据库)&lt;br&gt;
下面给出最简单的实现：&lt;br&gt;
&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=code&gt;&lt;strong&gt;&lt;font face="Courier New" color=#3366ff&gt;&amp;nbsp;
SqlDataAdapter da = new SqlDataAdapter(&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "SELECT * FROM Employees WHERE City='"+city+"'", nwindConn
);&lt;br&gt;
DataSet ds = new DataSet();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; da.Fill(ds,"Employees");&lt;br&gt;
&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class=code&gt;&lt;strong&gt;&lt;font face="Courier New" color=#3366ff&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
foreach (DataRow dr in ds.Tables["Employees"].Rows)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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; string name = dr["LastName"].ToString();&lt;br&gt;
int id = (int)dr["EmployeeID"];&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; Console.WriteLine(
id + ": " + name);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
让我们来看看有哪些地方容易出错：&lt;br&gt;
1. city参数可能会被SQL注入攻击利用.&lt;br&gt;
2. 数据类型是弱类型，需要强制转换类型，容易出现Runtime error.&lt;br&gt;
3. 表名和列名都是文字，不是类型变量。编译器无法做检查，容易出现Runtime error.&lt;br&gt;
&amp;nbsp;&amp;nbsp; (想必不少人碰到过写错表名，导致数据库访问出错，而debug n久的事情.)&lt;br&gt;
4. 查询语句也是文字，同样无法通过编译检查是否出错，容易出现Runtime error.
&lt;/p&gt;
&lt;p&gt;
通过使用SqlParameters以及Typed DataSet我们可以避免前三个问题&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=code&gt;&lt;strong&gt;&lt;font face="Courier New" color=#3366ff&gt; SqlDataAdapter
da = new SqlDataAdapter(&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; "SELECT * FROM
Employees WHERE City= @city", nwindConn );&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SqlParameter cityParam = da.SelectCommand.Parameters.Add("@city",
SqlDbType.VarChar, 80);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cityParam.Value = city;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NorthwindDataSet ds = new NorthwindDataSet();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; da.Fill(ds, ds.Employees.TableName );&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (NorthwindDataSet.EmployeesRow dr in ds.Employees.Rows)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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; string name = dr.LastName;&lt;br&gt;
&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span class=code&gt;&lt;strong&gt;&lt;font face="Courier New" color=#3366ff&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
int id = dr.EmployeeID;&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; Console.WriteLine(
id + ": " + name);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
但是第四个问题仍没有解决。也许你想到了 SQL stored procedure，就像下面这样：&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;span class=code&gt;&lt;font face="Courier New" color=#3366ff&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
&amp;nbsp;CREATE PROCEDURE EmployeesForCity&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @City nvarchar(80)&amp;nbsp;&amp;nbsp;AS&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT EmployeeID, LastName FROM Employees WHERE&amp;nbsp;City&amp;nbsp;=
@City&lt;/strong&gt;&lt;/font&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span class=code&gt;
&lt;br&gt;
&lt;strong&gt;&lt;font face="Courier New" color=#3366ff&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SqlCommand
cmd = new SqlCommand( "dbo.EmployeesForCity", nwindConn );&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.CommandType = CommandType.StoredProcedure;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SqlParameter cityParam = cmd.Parameters.Add("@city",
SqlDbType.VarChar, 80);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cityParam.Value = city;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SqlDataAdapter da = new SqlDataAdapter( cmd );&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NorthwindDataSet ds = new NorthwindDataSet();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; da.Fill(ds, ds.EmployeesForCity.TableName );&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (NorthwindDataSet.EmployeesForCityRow dr in
ds.EmployeesForCity.Rows)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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; string name = dr.LastName;&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; int id = dr.EmployeeID;&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; Console.WriteLine(
id + ": " + name);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
SQL查询语句虽然不能在编译器检查，但是至少我们可以先在SQL-server中验证stored procedure，&lt;br&gt;
再运行我们的程序,比Runtime error好多了。但是万一stored procedure改了，或者是数据库改了，&lt;br&gt;
那我们又会看到Runtime error。问题的根本在于我们的代码和数据库的联系实在是太弱了。对于一&lt;br&gt;
个小程序就如此容易出现问题，那么对于那种和数据库紧密联系的大型应用就更别谈了。
&lt;/p&gt;
&lt;p&gt;
再来看看C-omega的解决方案：&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=code&gt;&lt;strong&gt;&lt;font face="Courier New" color=#3366ff&gt;&amp;nbsp;&amp;nbsp;
&amp;nbsp;rows = select * from DB.Employees where City == city; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach( row in rows ) 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&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; string name = row.LastName.Value;&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; int id = row.EmployeeID.Value;&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; Console.WriteLine(
id.ToString() + ": " + name);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
以上代码需要引起注意的地方:&lt;br&gt;
1. 可以将本地变量city直接放入SQL语句，不会被SQL注入攻击。&lt;br&gt;
2. 结果集是强类型的，意味着在程序编译的时候我们就知道数据库的结构，甚至可以使用VS.net&lt;br&gt;
所带的智能感知(自动完成)功能。&lt;br&gt;
3. 在rows以及row前面甚至没有使用类型名，而它们却都是强类型的。&lt;br&gt;
4. 不再含有文字类型的信息，避免了人为输入错误。&lt;br&gt;
5. 在程序编译的时候就已经和数据库连接，当数据库发生变化的时候，在编译器就会报错。
&lt;/p&gt;
&lt;p&gt;
如果你不喜欢SQL的语法，你甚至用三行代码就能搞定以上所有任务。&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=code&gt;&lt;strong&gt;&lt;font face="Courier New" color=#3366ff&gt;DB.Employees
[City==city].{&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine( it.EmployeeID + ": " + t.LastName
);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br&gt;
&lt;/font&gt;&lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
从c++到C#我们常听见的一句话就是c＃是类型安全的。何谓类型安全？就是.Net Runtime支持编译期的类型检查。也就是尽量让Runtime error变成Compile
error，可以看出Cω在这个方面更进了一步。
&lt;/p&gt;
&lt;p&gt;
注：鉴于个人水平以及资料方面的原因对其内部机制实现笔者并为做深入研究。
&lt;/p&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.qihangnet.com"&gt;Qihangnet&lt;/a&gt;. </description>
      <comments>http://www.qihangnet.com/CommentView,guid,f5766311-2603-4dc7-9989-c16c95832f3e.aspx</comments>
      <category>DATABASE</category>
      <category>CSharp</category>
    </item>
    <item>
      <trackback:ping>http://www.qihangnet.com/Trackback.aspx?guid=c8577df0-08f3-46f2-9326-5b587410cdc8</trackback:ping>
      <pingback:server>http://www.qihangnet.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.qihangnet.com/PermaLink,guid,c8577df0-08f3-46f2-9326-5b587410cdc8.aspx</pingback:target>
      <dc:creator>衣明志</dc:creator>
      <wfw:comment>http://www.qihangnet.com/CommentView,guid,c8577df0-08f3-46f2-9326-5b587410cdc8.aspx</wfw:comment>
      <wfw:commentRss>http://www.qihangnet.com/SyndicationService.asmx/GetEntryCommentsRss?guid=c8577df0-08f3-46f2-9326-5b587410cdc8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <div style="PADDING-RIGHT: 15px; PADDING-LEFT: 20px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px">
          <div class="overview">
            <div>本文讨论： 
</div>
          </div>
          <div>
            <div>
              <strong>Snippet Compiler</strong> 是一个基于 Windows®的小型应用程序，您可以通过它来编写、编译和运行代码。如果您具有较小的代码段，并且您不希望为其创建完整的
Visual Studio .NET 项目（以及伴随该项目的所有文件），则该工具将很有用。 
</div>
            <div>Snippet Compiler 由 Jeff Key 编写，并且可以从 <a href="http://www.sliver.com/dotnet/SnippetCompiler" target="_blank">http://www.sliver.com/dotnet/SnippetCompiler</a> 下载。 
</div>
          </div>
          <div>
            <div>
              <strong>Regulator </strong>是最后一个添加到我的头等工具清单中的。它是一种很有特色的工具，能够使生成和测试正则表达式变得很容易。人们对正则表达式重新产生了兴趣，因为它们在
.NET 框架中受到很好的支持。正则表达式用来基于字符、频率和字符顺序定义字符串中的模式。它们最常见的用途是作为验证用户输入有效性的手段或者作为在较大字符串中查找字符串的方法
— 例如，在 Web 页上查找 URL 或电子邮件地址。 
</div>
            <div>Regulator 使您可以输入一个正则表达式以及一些针对其运行该表达式的输入内容。这样，在应用程序中实现该正则表达式之前，您可以了解它将产生什么效果以及它将返回哪些种类的匹配项。Regulator
由 Roy Osherove 编写，并且可以在 <a href="http://royo.is-a-geek.com/regulator" target="_blank">http://royo.is-a-geek.com/regulator</a> 下载。 
</div>
          </div>
          <div>
            <div>
              <strong>CodeSmith</strong> 是一种基于模板的代码生成工具，它使用类似于 ASP.NET 的语法来生成任意类型的代码或文本。与其他许多代码生成工具不同，CodeSmith
不要求您订阅特定的应用程序设计或体系结构。使用 CodeSmith，可以生成包括简单的强类型集合和完整应用程序在内的任何东西。 
</div>
            <div>当您生成应用程序时，您经常需要重复完成某些特定的任务，例如编写数据访问代码或者生成自定义集合。CodeSmith 在这些时候特别有用，因为您可以编写模板自动完成这些任务，从而不仅提高您的工作效率，而且能够自动完成那些最为乏味的任务。CodeSmith
附带了许多模板，包括对应于所有 .NET 集合类型的模板以及用于生成存储过程的模板，但该工具的真正威力在于能够创建自定义模板。为了使您能够入门，我将快速介绍一下如何生成自定义模板。   
</div>
          </div>
          <div>
            <div>CodeSmith 使用起来相当容易，如果能够正确应用，则可以产生一些令人难以置信的结果。面向代码生成的应用程序中最常见的部分之一是数据访问层。CodeSmith
包括一个名为 SchemaExplorer 的特殊的程序集，可用来从表、存储过程或几乎任何其他 SQL Server? 对象生成模板。 
</div>
            <div>CodeSmith 由 Eric J. Smith 编写，并且可以在 <a href="http://www.ericjsmith.net/codesmith" target="_blank">http://www.ericjsmith.net/codesmith</a> 下载。 
</div>
          </div>
          <div>
            <div>
              <strong>NUnit </strong>是为 .NET 框架生成的开放源代码单元测试框架。NUnit 使您可以用您喜欢的语言编写测试，从而测试应用程序的特定功能。当您首次编写代码时，单元测试是一种测试代码功能的很好方法，它还提供了一种对应用程序进行回归测试的方法。NUnit
应用程序提供了一个用于编写单元测试的框架，以及一个运行这些测试和查看结果的图形界面。 
</div>
          </div>
          <div>
            <div>NUnit 是一个开放源代码项目，并且可以从 <a href="http://www.nunit.org/" target="_blank">http://www.nunit.org</a> 下载。还有一个优秀的
NUnit Visual Studio .NET 外接程序，它使您可以直接从 Visual Studio 中运行单元测试。您可以在 <a href="http://sourceforge.net/projects/nunitaddin" target="_blank">http://sourceforge.net/projects/nunitaddin</a> 找到它。有关
NUnit 及其在测试驱动开发中的地位的详细信息，请参阅文章“<a href="http://msdn.microsoft.com/msdnmag/issues/04/04/ExtremeProgramming/" target="_blank">Test-Driven
C#: Improve the Design and Flexibility of Your Project with Extreme Programming Techniques</a>”（<i>MSDN</i> ®i&gt;Magazine
2004 年 4 月刊）。 
</div>
          </div>
          <div>
            <div>
              <strong>FxCop</strong> 是有助于创建更好的应用程序的工具之一，它所采用的方法是：使您能够分析程序集，并使用一些不同的规则来检查它是否符合这些规则。FxCop
随附了由 Microsoft 创建的固定数量的规则，但您也可以创建并包括您自己的规则。例如，如果您决定所有的类都应该具有一个不带任何参数的默认构造函数，则可以编写一条规则，以确保程序集的每个类上都具有一个构造函数。这样，无论是谁编写该代码，您都将获得一定程度的一致性。如果您需要有关创建自定义规则的详细信息，请参阅
John Robbins 的有关该主题的 <a href="http://msdn.microsoft.com/msdnmag/issues/04/06/bugslayer/" target="_blank">Bugslayer</a> 专栏文章（<i>MSDN</i> ®i&gt;
Magazine 2004 年 6 月刊）。 
</div>
            <div>那么，让我们观察一下实际运行的 FxCop，并且看一下它在我一直在处理的 NUnitExample 程序集中找到哪些错误。当您打开 FxCop 时，您首先需要创建一个
FxCop 项目，然后向其添加您要测试的程序集。在将该程序集添加到项目以后，就可以按 Analyze，FxCop 将分析该程序集。<a href="http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/art/TMHTEDSDN06.htm" target="_blank">图
6</a> 中显示了在该程序集中找到的错误和警告。 
</div>
            <div>FxCop 在我的程序集中找到了几个问题。您可以双击某个错误以查看详细信息，包括规则说明以及在哪里可以找到更多信息。（您可以做的一件有趣的事情是在框架程序集上运行
FxCop 并查看发生了什么事情。） 
</div>
            <div>FxCop 可以帮助您创建更好的、更一致的代码，但它无法补偿低劣的应用程序设计或非常简单拙劣的编程。FxCop 也不能替代对等代码检查，但是因为它可以在进行代码检查之前捕获大量错误，所以您可以花费更多时间来解决严重的问题，而不必担心命名约定。FxCop
由 Microsoft 开发，并且可以从 <a href="http://www.gotdotnet.com/team/fxcop" target="_blank">http://www.gotdotnet.com/team/fxcop</a> 下载。 
</div>
          </div>
          <div>
            <div>
              <strong>.NET Reflector</strong>，它是一个类浏览器和反编译器，可以分析程序集并向您展示它的所有秘密。.NET 框架向全世界引入了可用来分析任何基于
.NET 的代码（无论它是单个类还是完整的程序集）的反射概念。反射还可以用来检索有关特定程序集中包含的各种类、方法和属性的信息。使用 .NET Reflector，您可以浏览程序集的类和方法，可以分析由这些类和方法生成的
Microsoft 中间语言 (MSIL)，并且可以反编译这些类和方法并查看 C# 或 Visual Basic ®NET 中的等价类和方法。 
</div>
            <div style="WIDTH: 250px">
              <img height="432" alt="" src="http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/art/TMHTEDSDN07.gif" width="250" border="0" />
              <br />
              <p class="figureCaption">
                <b>图 7</b> NUnitExample 程序集 
</p>
            </div>
            <div>.NET Reflector 由 Lutz Roeder 编写，并且可以从 <a href="http://www.aisto.com/roeder/dotnet" target="_blank">http://www.aisto.com/roeder/dotnet</a> 下载。 
</div>
          </div>
          <div>
            <div>
              <strong>NDoc</strong> 工具能够使用反射来分析程序集，并使用从 C# XML 注释生成的 XML 自动为代码生成文档资料。XML 注释仅适用于
C#，但有一个名为 VBCommenter 的 Visual Studio .NET Power Toy，它能够为 Visual Basic .NET 完成类似的工作。此外，下一版本的
Visual Studio 将为更多语言支持 XML 注释。 
</div>
            <div>NDoc 是一个开放源代码项目，并且可以从 <a href="http://ndoc.sourceforge.net/" target="_blank">http://ndoc.sourceforge.net</a> 下载。 
</div>
          </div>
          <div>
            <div>
              <strong>NAnt </strong>是一个基于 .NET 的生成工具，与当前版本的 Visual Studio .NET 不同，它使得为您的项目创建生成过程变得非常容易。当您拥有大量从事单个项目的开发人员时，您不能依赖于从单个用户的座位进行生成。您也不希望必须定期手动生成该项目。您更愿意创建每天晚上运行的自动生成过程。NAnt
使您可以生成解决方案、复制文件、运行 NUnit 测试、发送电子邮件，等等。遗憾的是，NAnt 缺少漂亮的图形界面，但它的确具有可以指定应该在生成过程中完成哪些任务的控制台应用程序和
XML 文件。注意，MSBuild（属于 Visual Studio 2005 的新的生成平台）为每种健壮的生成方案进行了准备，并且由基于 XML 的项目文件以类似的方式驱动。 
</div>
          </div>
          <div>
            <div>NAnt 是一个开放源代码项目，并且可以从 <a href="http://nant.sourceforge.net/" target="_blank">http://nant.sourceforge.net</a> 下载。 
</div>
          </div>
          <div>
            <div>
              <strong>两个转换工具</strong>都非常简单，但又可能极为有用。第一个工具是 ASP.NET 版本转换器，它可用于转换 ASP.NET（虚拟目录在它下面运行）的版本。第二个工具是
Visual Studio Converter，它可用于将项目文件从 Visual Studio .NET 2002 转换到 Visual Studio .NET
2003。 
</div>
            <div>当 IIS 处理请求时，它会查看正在请求的文件的扩展名，然后基于该 Web 站点或虚拟目录的扩展名映射，将请求委派给 ISAPI 扩展或者自己处理该请求。这正是
ASP.NET 的工作方式；将为所有 ASP.NET 扩展名注册扩展名映射，并将这些扩展名映射导向 aspnet_isapi.dll。这种工作方式是完美无缺的，除非您安装了
ASP.NET 1.1 — 它会将扩展名映射升级到新版本的 aspnet_isapi.dll。当在 ASP.NET 1.0 上生成的应用程序试图用 1.1 版运行时，这会导致错误。要解决该问题，可以将所有扩展名映射重新转换到
1.0 版的 aspnet_isapi.dll，但是由于有 18 种扩展名映射，所以手动完成这一工作将很枯燥。这正是 ASP.NET 版本转换器可以发挥作用的时候。使用这一小型实用工具，可以转换任何单个
ASP.NET 应用程序所使用的 .NET 框架的版本。 
</div>
            <div style="WIDTH: 280px">
              <img height="232" alt="" src="http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/art/TMHTEDSDN09.gif" width="280" border="0" />
              <br />
              <p class="figureCaption">
                <b>图 9</b> ASP.NET 版本转换器 
</p>
            </div>
            <div>ASP.NET 版本转换器由 Denis Bauer 编写，并且可以从 <a href="http://www.denisbauer.com/NETTools/ASPNETVersionSwitcher.aspx" target="_blank">http://www.denisbauer.com/NETTools/ASPNETVersionSwitcher.aspx</a> 下载。 
</div>
            <div>Visual Studio .NET 项目转换器（参见图 10）非常类似于 ASP.NET 版本转换器，区别在于它用于转换 Visual Studio 项目文件的版本。尽管在
.NET 框架的 1.0 版和 1.1 版之间只有很小的差异，但一旦将项目文件从 Visual Studio .NET 2002 转换到 Visual Studio
.NET 2003，将无法再把它转换回去。虽然这在大多数时候可能不会成为问题（因为在 .NET 框架 1.0 版和 1.1 版之间几乎没有什么破坏性的更改），但在某些时刻您可能需要将项目转换回去。该转换器可以将任何解决方案或项目文件从
Visual Studio 7.1 (Visual Studio .NET 2003) 转换到 Visual Studio 7.0 (Visual Studio .NET
2002)，并在必要时进行反向转换。 
</div>
            <div style="WIDTH: 340px">
              <img height="251" alt="" src="http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/art/TMHTEDSDN10.gif" width="340" border="0" />
              <br />
              <p class="figureCaption">
                <b>图 10</b> Visual Studio .NET 项目转换器 
</p>
            </div>
            <div>Visual Studio .NET 项目转换器由 Dacris Software 编写。该工具可以从 <a href="http://www.codeproject.com/macro/vsconvert.asp" target="_blank">http://www.codeproject.com/macro/vsconvert.asp</a> 下载。 
</div>
          </div>
          <div>
          </div>
          <div>
            <b>James Avery</b> 是一位使用 .NET 和其他 Microsoft 技术的顾问。他已经撰写了许多书籍和文章，他的最新著作是《ASP.NET
Setup and Configuration Pocket Reference》(Microsoft Press, 2003)。您可以通过 <a href="mailto:javery@infozerk.com" target="_blank">javery@infozerk.com</a> 向他发送电子邮件，并且在 <a href="http://www.dotavery.com/blog" target="_blank">http://www.dotavery.com/blog</a> 阅读他的网络日记。 
</div>
        </div>
        <br />
        <hr />
This weblog is sponsored by <a href="http://www.qihangnet.com">Qihangnet</a>. 
</body>
      <title>[转载]每个开发人员现在应该下载的十种必备工具</title>
      <guid isPermaLink="false">http://www.qihangnet.com/PermaLink,guid,c8577df0-08f3-46f2-9326-5b587410cdc8.aspx</guid>
      <link>http://www.qihangnet.com/PermaLink,guid,c8577df0-08f3-46f2-9326-5b587410cdc8.aspx</link>
      <pubDate>Sat, 26 Mar 2005 03:30:40 GMT</pubDate>
      <description>&lt;div style="PADDING-RIGHT: 15px; PADDING-LEFT: 20px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px"&gt;
&lt;div class=overview&gt;
&lt;div&gt;本文讨论： 
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Snippet Compiler&lt;/strong&gt; 是一个基于 Windows®的小型应用程序，您可以通过它来编写、编译和运行代码。如果您具有较小的代码段，并且您不希望为其创建完整的
Visual Studio .NET 项目（以及伴随该项目的所有文件），则该工具将很有用。 
&lt;/div&gt;
&lt;div&gt;Snippet Compiler 由 Jeff Key 编写，并且可以从 &lt;a href="http://www.sliver.com/dotnet/SnippetCompiler" target=_blank&gt;http://www.sliver.com/dotnet/SnippetCompiler&lt;/a&gt; 下载。 
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;Regulator &lt;/strong&gt;是最后一个添加到我的头等工具清单中的。它是一种很有特色的工具，能够使生成和测试正则表达式变得很容易。人们对正则表达式重新产生了兴趣，因为它们在
.NET 框架中受到很好的支持。正则表达式用来基于字符、频率和字符顺序定义字符串中的模式。它们最常见的用途是作为验证用户输入有效性的手段或者作为在较大字符串中查找字符串的方法
— 例如，在 Web 页上查找 URL 或电子邮件地址。 
&lt;/div&gt;
&lt;div&gt;Regulator 使您可以输入一个正则表达式以及一些针对其运行该表达式的输入内容。这样，在应用程序中实现该正则表达式之前，您可以了解它将产生什么效果以及它将返回哪些种类的匹配项。Regulator
由 Roy Osherove 编写，并且可以在 &lt;a href="http://royo.is-a-geek.com/regulator" target=_blank&gt;http://royo.is-a-geek.com/regulator&lt;/a&gt; 下载。 
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;CodeSmith&lt;/strong&gt; 是一种基于模板的代码生成工具，它使用类似于 ASP.NET 的语法来生成任意类型的代码或文本。与其他许多代码生成工具不同，CodeSmith
不要求您订阅特定的应用程序设计或体系结构。使用 CodeSmith，可以生成包括简单的强类型集合和完整应用程序在内的任何东西。 
&lt;/div&gt;
&lt;div&gt;当您生成应用程序时，您经常需要重复完成某些特定的任务，例如编写数据访问代码或者生成自定义集合。CodeSmith 在这些时候特别有用，因为您可以编写模板自动完成这些任务，从而不仅提高您的工作效率，而且能够自动完成那些最为乏味的任务。CodeSmith
附带了许多模板，包括对应于所有 .NET 集合类型的模板以及用于生成存储过程的模板，但该工具的真正威力在于能够创建自定义模板。为了使您能够入门，我将快速介绍一下如何生成自定义模板。&amp;nbsp;&amp;nbsp; 
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;CodeSmith 使用起来相当容易，如果能够正确应用，则可以产生一些令人难以置信的结果。面向代码生成的应用程序中最常见的部分之一是数据访问层。CodeSmith
包括一个名为 SchemaExplorer 的特殊的程序集，可用来从表、存储过程或几乎任何其他 SQL Server? 对象生成模板。 
&lt;/div&gt;
&lt;div&gt;CodeSmith 由 Eric J. Smith 编写，并且可以在 &lt;a href="http://www.ericjsmith.net/codesmith" target=_blank&gt;http://www.ericjsmith.net/codesmith&lt;/a&gt; 下载。 
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;NUnit &lt;/strong&gt;是为 .NET 框架生成的开放源代码单元测试框架。NUnit 使您可以用您喜欢的语言编写测试，从而测试应用程序的特定功能。当您首次编写代码时，单元测试是一种测试代码功能的很好方法，它还提供了一种对应用程序进行回归测试的方法。NUnit
应用程序提供了一个用于编写单元测试的框架，以及一个运行这些测试和查看结果的图形界面。 
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;NUnit 是一个开放源代码项目，并且可以从 &lt;a href="http://www.nunit.org/" target=_blank&gt;http://www.nunit.org&lt;/a&gt; 下载。还有一个优秀的
NUnit Visual Studio .NET 外接程序，它使您可以直接从 Visual Studio 中运行单元测试。您可以在 &lt;a href="http://sourceforge.net/projects/nunitaddin" target=_blank&gt;http://sourceforge.net/projects/nunitaddin&lt;/a&gt; 找到它。有关
NUnit 及其在测试驱动开发中的地位的详细信息，请参阅文章“&lt;a href="http://msdn.microsoft.com/msdnmag/issues/04/04/ExtremeProgramming/" target=_blank&gt;Test-Driven
C#: Improve the Design and Flexibility of Your Project with Extreme Programming Techniques&lt;/a&gt;”（&lt;i&gt;MSDN&lt;/i&gt; ®i&amp;gt;Magazine
2004 年 4 月刊）。 
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;FxCop&lt;/strong&gt; 是有助于创建更好的应用程序的工具之一，它所采用的方法是：使您能够分析程序集，并使用一些不同的规则来检查它是否符合这些规则。FxCop
随附了由 Microsoft 创建的固定数量的规则，但您也可以创建并包括您自己的规则。例如，如果您决定所有的类都应该具有一个不带任何参数的默认构造函数，则可以编写一条规则，以确保程序集的每个类上都具有一个构造函数。这样，无论是谁编写该代码，您都将获得一定程度的一致性。如果您需要有关创建自定义规则的详细信息，请参阅
John Robbins 的有关该主题的 &lt;a href="http://msdn.microsoft.com/msdnmag/issues/04/06/bugslayer/" target=_blank&gt;Bugslayer&lt;/a&gt; 专栏文章（&lt;i&gt;MSDN&lt;/i&gt; ®i&amp;gt;
Magazine 2004 年 6 月刊）。 
&lt;/div&gt;
&lt;div&gt;那么，让我们观察一下实际运行的 FxCop，并且看一下它在我一直在处理的 NUnitExample 程序集中找到哪些错误。当您打开 FxCop 时，您首先需要创建一个
FxCop 项目，然后向其添加您要测试的程序集。在将该程序集添加到项目以后，就可以按 Analyze，FxCop 将分析该程序集。&lt;a href="http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/art/TMHTEDSDN06.htm" target=_blank&gt;图
6&lt;/a&gt; 中显示了在该程序集中找到的错误和警告。 
&lt;/div&gt;
&lt;div&gt;FxCop 在我的程序集中找到了几个问题。您可以双击某个错误以查看详细信息，包括规则说明以及在哪里可以找到更多信息。（您可以做的一件有趣的事情是在框架程序集上运行
FxCop 并查看发生了什么事情。） 
&lt;/div&gt;
&lt;div&gt;FxCop 可以帮助您创建更好的、更一致的代码，但它无法补偿低劣的应用程序设计或非常简单拙劣的编程。FxCop 也不能替代对等代码检查，但是因为它可以在进行代码检查之前捕获大量错误，所以您可以花费更多时间来解决严重的问题，而不必担心命名约定。FxCop
由 Microsoft 开发，并且可以从 &lt;a href="http://www.gotdotnet.com/team/fxcop" target=_blank&gt;http://www.gotdotnet.com/team/fxcop&lt;/a&gt; 下载。 
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;.NET Reflector&lt;/strong&gt;，它是一个类浏览器和反编译器，可以分析程序集并向您展示它的所有秘密。.NET 框架向全世界引入了可用来分析任何基于
.NET 的代码（无论它是单个类还是完整的程序集）的反射概念。反射还可以用来检索有关特定程序集中包含的各种类、方法和属性的信息。使用 .NET Reflector，您可以浏览程序集的类和方法，可以分析由这些类和方法生成的
Microsoft 中间语言 (MSIL)，并且可以反编译这些类和方法并查看 C# 或 Visual Basic ®NET 中的等价类和方法。 
&lt;/div&gt;
&lt;div style="WIDTH: 250px"&gt;&lt;img height=432 alt="" src="http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/art/TMHTEDSDN07.gif" width=250 border=0&gt; 
&lt;br&gt;
&lt;p class=figureCaption&gt;
&lt;b&gt;图 7&lt;/b&gt; NUnitExample 程序集 
&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;.NET Reflector 由 Lutz Roeder 编写，并且可以从 &lt;a href="http://www.aisto.com/roeder/dotnet" target=_blank&gt;http://www.aisto.com/roeder/dotnet&lt;/a&gt; 下载。 
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;NDoc&lt;/strong&gt; 工具能够使用反射来分析程序集，并使用从 C# XML 注释生成的 XML 自动为代码生成文档资料。XML 注释仅适用于
C#，但有一个名为 VBCommenter 的 Visual Studio .NET Power Toy，它能够为 Visual Basic .NET 完成类似的工作。此外，下一版本的
Visual Studio 将为更多语言支持 XML 注释。 
&lt;/div&gt;
&lt;div&gt;NDoc 是一个开放源代码项目，并且可以从 &lt;a href="http://ndoc.sourceforge.net/" target=_blank&gt;http://ndoc.sourceforge.net&lt;/a&gt; 下载。 
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;NAnt &lt;/strong&gt;是一个基于 .NET 的生成工具，与当前版本的 Visual Studio .NET 不同，它使得为您的项目创建生成过程变得非常容易。当您拥有大量从事单个项目的开发人员时，您不能依赖于从单个用户的座位进行生成。您也不希望必须定期手动生成该项目。您更愿意创建每天晚上运行的自动生成过程。NAnt
使您可以生成解决方案、复制文件、运行 NUnit 测试、发送电子邮件，等等。遗憾的是，NAnt 缺少漂亮的图形界面，但它的确具有可以指定应该在生成过程中完成哪些任务的控制台应用程序和
XML 文件。注意，MSBuild（属于 Visual Studio 2005 的新的生成平台）为每种健壮的生成方案进行了准备，并且由基于 XML 的项目文件以类似的方式驱动。 
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;NAnt 是一个开放源代码项目，并且可以从 &lt;a href="http://nant.sourceforge.net/" target=_blank&gt;http://nant.sourceforge.net&lt;/a&gt; 下载。 
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;&lt;strong&gt;两个转换工具&lt;/strong&gt;都非常简单，但又可能极为有用。第一个工具是 ASP.NET 版本转换器，它可用于转换 ASP.NET（虚拟目录在它下面运行）的版本。第二个工具是
Visual Studio Converter，它可用于将项目文件从 Visual Studio .NET 2002 转换到 Visual Studio .NET
2003。 
&lt;/div&gt;
&lt;div&gt;当 IIS 处理请求时，它会查看正在请求的文件的扩展名，然后基于该 Web 站点或虚拟目录的扩展名映射，将请求委派给 ISAPI 扩展或者自己处理该请求。这正是
ASP.NET 的工作方式；将为所有 ASP.NET 扩展名注册扩展名映射，并将这些扩展名映射导向 aspnet_isapi.dll。这种工作方式是完美无缺的，除非您安装了
ASP.NET 1.1 — 它会将扩展名映射升级到新版本的 aspnet_isapi.dll。当在 ASP.NET 1.0 上生成的应用程序试图用 1.1 版运行时，这会导致错误。要解决该问题，可以将所有扩展名映射重新转换到
1.0 版的 aspnet_isapi.dll，但是由于有 18 种扩展名映射，所以手动完成这一工作将很枯燥。这正是 ASP.NET 版本转换器可以发挥作用的时候。使用这一小型实用工具，可以转换任何单个
ASP.NET 应用程序所使用的 .NET 框架的版本。 
&lt;/div&gt;
&lt;div style="WIDTH: 280px"&gt;&lt;img height=232 alt="" src="http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/art/TMHTEDSDN09.gif" width=280 border=0&gt; 
&lt;br&gt;
&lt;p class=figureCaption&gt;
&lt;b&gt;图 9&lt;/b&gt; ASP.NET 版本转换器 
&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;ASP.NET 版本转换器由 Denis Bauer 编写，并且可以从 &lt;a href="http://www.denisbauer.com/NETTools/ASPNETVersionSwitcher.aspx" target=_blank&gt;http://www.denisbauer.com/NETTools/ASPNETVersionSwitcher.aspx&lt;/a&gt; 下载。 
&lt;/div&gt;
&lt;div&gt;Visual Studio .NET 项目转换器（参见图 10）非常类似于 ASP.NET 版本转换器，区别在于它用于转换 Visual Studio 项目文件的版本。尽管在
.NET 框架的 1.0 版和 1.1 版之间只有很小的差异，但一旦将项目文件从 Visual Studio .NET 2002 转换到 Visual Studio
.NET 2003，将无法再把它转换回去。虽然这在大多数时候可能不会成为问题（因为在 .NET 框架 1.0 版和 1.1 版之间几乎没有什么破坏性的更改），但在某些时刻您可能需要将项目转换回去。该转换器可以将任何解决方案或项目文件从
Visual Studio 7.1 (Visual Studio .NET 2003) 转换到 Visual Studio 7.0 (Visual Studio .NET
2002)，并在必要时进行反向转换。 
&lt;/div&gt;
&lt;div style="WIDTH: 340px"&gt;&lt;img height=251 alt="" src="http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/art/TMHTEDSDN10.gif" width=340 border=0&gt; 
&lt;br&gt;
&lt;p class=figureCaption&gt;
&lt;b&gt;图 10&lt;/b&gt; Visual Studio .NET 项目转换器 
&lt;/p&gt;
&lt;/div&gt;
&lt;div&gt;Visual Studio .NET 项目转换器由 Dacris Software 编写。该工具可以从 &lt;a href="http://www.codeproject.com/macro/vsconvert.asp" target=_blank&gt;http://www.codeproject.com/macro/vsconvert.asp&lt;/a&gt; 下载。 
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;b&gt;James Avery&lt;/b&gt; 是一位使用 .NET 和其他 Microsoft 技术的顾问。他已经撰写了许多书籍和文章，他的最新著作是《ASP.NET
Setup and Configuration Pocket Reference》(Microsoft Press, 2003)。您可以通过 &lt;a href="mailto:javery@infozerk.com" target=_blank&gt;javery@infozerk.com&lt;/a&gt; 向他发送电子邮件，并且在 &lt;a href="http://www.dotavery.com/blog" target=_blank&gt;http://www.dotavery.com/blog&lt;/a&gt; 阅读他的网络日记。 
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.qihangnet.com"&gt;Qihangnet&lt;/a&gt;. </description>
      <comments>http://www.qihangnet.com/CommentView,guid,c8577df0-08f3-46f2-9326-5b587410cdc8.aspx</comments>
      <category>CSharp</category>
    </item>
    <item>
      <trackback:ping>http://www.qihangnet.com/Trackback.aspx?guid=92b78c16-80b7-43a2-8538-7db63ce17f07</trackback:ping>
      <pingback:server>http://www.qihangnet.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.qihangnet.com/PermaLink,guid,92b78c16-80b7-43a2-8538-7db63ce17f07.aspx</pingback:target>
      <dc:creator>衣明志</dc:creator>
      <wfw:comment>http://www.qihangnet.com/CommentView,guid,92b78c16-80b7-43a2-8538-7db63ce17f07.aspx</wfw:comment>
      <wfw:commentRss>http://www.qihangnet.com/SyndicationService.asmx/GetEntryCommentsRss?guid=92b78c16-80b7-43a2-8538-7db63ce17f07</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <span style="COLOR: #000000">
          <span style="COLOR: #008200">//*********************************************************** <br /></span>
          <br />
          <span style="COLOR: #008200">//*名称：一个程序详细研究DataReader,同时显示Command用法 <br /></span>
          <br />
          <span style="COLOR: #008200">//*功能：演示DataReader的各项操作。 <br /></span>
          <br />
          <span style="COLOR: #008200">//*说明：如果需要文字说明请查看我的BLOG里面关于ado.net的文章 <br /></span>
          <br />
          <span style="COLOR: #008200">//*作者：雪冬寒 <br /></span>
          <br />
          <span style="COLOR: #008200">//*BOLG：http://blog.csdn.net/bineon <br /></span>
          <br />
          <span style="COLOR: #008200">//*********************************************************** </span>
        </span>
        <br />
        <span style="COLOR: #000000">
          <span style="COLOR: #0000ff">using</span> System; <br /><span style="COLOR: #0000ff">using</span> System.Data; <br /><span style="COLOR: #0000ff">using</span> System.Data.SqlClient; <br /><span style="COLOR: #0000ff">using</span> System.Data.OleDb; <br /><br /><span style="COLOR: #0000ff">class</span> SqlReader <br />
{ <br />
 <span style="COLOR: #0000ff">const</span> <span style="COLOR: #0000ff">string</span> connStr = <span style="COLOR: #848284">"data source=bineon;user id=sa;password=87345587;initial catalog=contract"</span>; <br />
 SqlConnection conn;  <br /><br />
  <br />
 <span style="COLOR: #0000ff">public</span> SqlReader() <br />
 { <br />
  conn = <span style="COLOR: #0000ff">new</span> SqlConnection(connStr); <br />
 } <br /><br /><br /><span style="COLOR: #008200">//************************************** <br /></span><br /><span style="COLOR: #008200">//*演示DataReader的两种取值方法 <br /></span><br /><span style="COLOR: #008200">//************************************** <br /></span><br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">void</span> basicReader() <br />
  <br />
  <span style="COLOR: #0000ff">string</span> sql=<span style="COLOR: #848284">"select * from friend"</span>; <br />
  SqlCommand cmd; <br />
  cmd = conn.CreateCommand(); <br />
  cmd.CommandText = sql; <br />
  conn.Open(); <br />
  SqlDataReader reader = cmd.ExecuteReader(); <br />
  <span style="COLOR: #0000ff">while</span>(reader.Read()) <br />
    <br />
   Console.WriteLine(<span style="COLOR: #848284">"No: 0}\tName: 1}\tPhoneNum: 2},\tAddress: 3}"</span>,reader.GetInt32(0).ToString(),reader.GetString(1),reader[2].ToString(),reader[<span style="COLOR: #848284">"Faddress"</span>].ToString()); <br />
  } <br />
  showSplit(); <br />
  reader.Close(); <br />
  conn.Close(); <br />
} <br /><br /><span style="COLOR: #008200">//************************************** <br /></span><br /><span style="COLOR: #008200">//*演示带参数查询的操作，使用SqlCilent <br /></span><br /><span style="COLOR: #008200">//************************************** <br /></span><br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">void</span> hasParamReader() <br />
  <br />
  SqlCommand cmd; <br />
  cmd = conn.CreateCommand(); <br />
  <span style="COLOR: #0000ff">string</span> sql = <span style="COLOR: #848284">"select Fname,Fphone,Faddress from friend where Fid &gt; @Fid"</span>; <br />
  cmd.CommandText = sql; <br />
  SqlParameter param = <span style="COLOR: #0000ff">new</span> SqlParameter(<span style="COLOR: #848284">"@Fid"</span>,SqlDbType.Int,4); <br />
  param.value = 15; <br />
  cmd.Parameters.Add(param); <br />
  conn.Open(); <br />
  <span style="COLOR: #008200">//当关闭reader的时候同时关闭数据库连接 <br /></span><br />
  SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); <br />
  <span style="COLOR: #0000ff">while</span>(reader.Read()) <br />
    <br />
   Console.WriteLine(<span style="COLOR: #848284">"Name: 0}\tPhoneNum: 1}\tAddress: 2}"</span>,reader.GetString(0),reader.GetString(1),reader.GetString(2)); <br />
  } <br />
  showSplit(); <br />
  <span style="COLOR: #008200">//无需关闭conn,系统会自动调用这个方法来关闭conn的。 <br /></span><br />
  reader.Close(); <br />
} <br /><br /><span style="COLOR: #008200">//************************************** <br /></span><br /><span style="COLOR: #008200">//*演示带参数查询的操作,使用OleDb <br /></span><br /><span style="COLOR: #008200">//************************************** <br /></span><br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">void</span> hasOledbParamReader() <br />
  <br />
  SqlCommand cmd; <br />
  cmd = conn.CreateCommand(); <br />
  <span style="COLOR: #0000ff">string</span> sql = <span style="COLOR: #848284">"select Fname,Fphone,Faddress from friend where Fid &gt; ?"</span>; <br />
  <span style="COLOR: #0000ff">string</span> oledbConnStr = <span style="COLOR: #848284">"Provider=sqloledb;"</span> + connStr; <br />
  OleDbConnection oleConn = <span style="COLOR: #0000ff">new</span> OleDbConnection(oledbConnStr); <br />
  OleDbCommand oleCmd = <span style="COLOR: #0000ff">new</span> OleDbCommand(sql,oleConn); <br />
  oleCmd.Parameters.Add(<span style="COLOR: #848284">"nothing"</span>,15); <br />
  oleConn.Open(); <br />
  OleDbDataReader oleReader = oleCmd.ExecuteReader(); <br />
  <span style="COLOR: #0000ff">while</span>(oleReader.Read()) <br />
    <br />
   Console.WriteLine(<span style="COLOR: #848284">"Name: 0}\tPhoneNum: 1}\tAddress: 2}"</span>,oleReader.GetString(0),oleReader.GetString(1),oleReader.GetString(2)); <br />
  } <br />
  showSplit(); <br />
  oleReader.Close(); <br />
  oleConn.Close(); <br />
} <br /><br /><span style="COLOR: #008200">//************************************** <br /></span><br /><span style="COLOR: #008200">//*演示存储过程的输出参数 <br /></span><br /><span style="COLOR: #008200">//************************************** <br /></span><br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">void</span> outParamShow() <br />
  <br />
  SqlCommand cmd; <br />
  cmd = conn.CreateCommand(); <br />
  cmd.CommandText = <span style="COLOR: #848284">"GetInfo"</span>; <br />
  cmd.CommandType = CommandType.StoredProcedure; <br />
  SqlParameter param = cmd.Parameters.Add(<span style="COLOR: #848284">"@Fid"</span>,16); <br />
  param = cmd.Parameters.Add(<span style="COLOR: #848284">"@Fname"</span>,SqlDbType.VarChar,8); <br />
  param.Direction = ParameterDirection.Output; <br />
  param = cmd.Parameters.Add(<span style="COLOR: #848284">"@Fphone"</span>,SqlDbType.VarChar,8); <br />
  param.Direction = ParameterDirection.Output; <br />
  conn.Open(); <br />
  cmd.ExecuteNonQuery(); <br />
  <span style="COLOR: #0000ff">string</span> Fname = cmd.Parameters[<span style="COLOR: #848284">"@Fname"</span>].value.ToString(); <br />
  <span style="COLOR: #0000ff">string</span> Fphone = cmd.Parameters[<span style="COLOR: #848284">"@Fphone"</span>].value.ToString(); <br />
  Console.WriteLine(Fname + <span style="COLOR: #848284">"  "</span> + Fphone); <br />
  conn.Close(); <br />
  showSplit(); <br />
} <br /><br /><span style="COLOR: #008200">//************************************** <br /></span><br /><span style="COLOR: #008200">//*演示读取多个无关记录集 <br /></span><br /><span style="COLOR: #008200">//************************************** <br /></span><br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">void</span> multiResult() <br />
  <br />
  SqlCommand cmd; <br />
  cmd = conn.CreateCommand(); <br />
  <span style="COLOR: #0000ff">string</span> sqla = <span style="COLOR: #848284">"select Fname from friend"</span>; <br />
  <span style="COLOR: #0000ff">string</span> sqlb = <span style="COLOR: #848284">"select Fphone from friend"</span>; <br />
  cmd.CommandText = sqla + <span style="COLOR: #848284">";"</span> + sqlb; <br />
  conn.Open(); <br />
  SqlDataReader reader= cmd.ExecuteReader(); <br />
  <span style="COLOR: #0000ff">int</span> i = 1; <br />
  <span style="COLOR: #0000ff">do</span> <br />
    <br />
   Console.WriteLine(<span style="COLOR: #848284">"第"</span> + i.ToString() + <span style="COLOR: #848284">"个记录集内容如下：\n"</span>); <br />
   <span style="COLOR: #0000ff">while</span>(reader.Read()) <br />
     <br />
    Console.WriteLine(reader[0].ToString() + <span style="COLOR: #848284">"\t"</span>); <br />
   } <br />
   i++; <br />
  }<span style="COLOR: #0000ff">while</span>(reader.NextResult()); <span style="COLOR: #008200">//NextResult()移动到下一个记录集 <br /></span><br />
  reader.Close(); <br />
  conn.Close(); <br />
  showSplit(); <br />
} <br /><br /><span style="COLOR: #008200">//************************************** <br /></span><br /><span style="COLOR: #008200">//*使用DataReader获得数据库模式信息 <br /></span><br /><span style="COLOR: #008200">//************************************** <br /></span><br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">void</span> getSchema() <br />
  <br />
  SqlCommand cmd; <br />
  cmd = conn.CreateCommand(); <br />
  <span style="COLOR: #0000ff">string</span> sql = <span style="COLOR: #848284">"select Fid,Fname,Fphone from friend"</span>; <br />
     cmd.CommandText = sql; <br />
     conn.Open(); <br />
     SqlDataReader reader = cmd.ExecuteReader(); <br />
     DataTable SchemaTable = reader.GetSchemaTable(); <br />
     <br />
     DataRowCollection SchemaColumns = SchemaTable.Rows; <br />
     DataColumnCollection SchemaProps = SchemaTable.Columns;   <br />
     <span style="COLOR: #0000ff">foreach</span>(DataRow SchemaColumn <span style="COLOR: #0000ff">in</span> SchemaColumns) <br />
       <br />
      <span style="COLOR: #0000ff">foreach</span>(DataColumn SchemaColumnProp <span style="COLOR: #0000ff">in</span> SchemaProps) <br />
        <br />
       Console.WriteLine(SchemaColumnProp.ColumnName + <span style="COLOR: #848284">"="</span> + SchemaColumn[SchemaColumnProp.ColumnName].ToString()); <br />
      } <br />
     } <br />
     reader.Close(); <br />
     conn.Close(); <br />
     showSplit(); <br />
} <br /><br /><span style="COLOR: #008200">//************************************** <br /></span><br /><span style="COLOR: #008200">//*从数据库读取二进制数据的代码段 <br /></span><br /><span style="COLOR: #008200">//*该代码段只是读取二进制的片断，不是 <br /></span><br /><span style="COLOR: #008200">//*整个程序，所以不能执行，你可以把它 <br /></span><br /><span style="COLOR: #008200">//*集成到你的WinForm项目里面。 <br /></span><br /><span style="COLOR: #008200">//************************************** <br /></span><br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">void</span> getBinary() <br />
  <br />
  <span style="COLOR: #008200">/* <br />
  System.IO.MemoryStream stream = new System.IO.MemoryStream(); <br />
  System.IO.BinaryWriter writer = new System.IO.BinaryWriter(stream);   <br />
  int BufferSize = 1024; <br />
  byte[] Buffer = new Byte[BufferSize]; <br />
  long Offset = 0; <br />
  long BytesRead = 0; <br />
  do <br />
    <br />
   BytesRead = reader.GetBytes(2,Offset,Buffer,0,BufferSize); <br />
   writer.Writer(Buffer,0,(int)BytesRead); <br />
   writer.Flush(); <br />
   Offset += BytesRead; <br />
  } <br />
  while(BytesRead == BufferSize); <br />
  */</span> <br />
} <br /><br /><span style="COLOR: #008200">//添加输出分隔 <br /></span><br /><span style="COLOR: #0000ff">private</span> <span style="COLOR: #0000ff">void</span> showSplit() <br />
  <br />
  Console.WriteLine(<span style="COLOR: #848284">"\n********************************************************************\n"</span>); <br />
} <br /><br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">void</span> Main(<span style="COLOR: #0000ff">string</span> [] args) <br />
  <br />
  SqlReader sqlreader = <span style="COLOR: #0000ff">new</span> SqlReader(); <br />
   <br />
  sqlreader.basicReader(); <br />
   <br />
  sqlreader.hasParamReader(); <br />
   <br />
  sqlreader.hasOledbParamReader(); <br />
   <br />
  sqlreader.outParamShow(); <br />
   <br />
  sqlreader.multiResult(); <br />
   <br />
  sqlreader.getSchema(); <br />
} <br />
}</span>
        <br />
        <hr />
This weblog is sponsored by <a href="http://www.qihangnet.com">Qihangnet</a>. 
</body>
      <title>一个程序详细研究DataReader</title>
      <guid isPermaLink="false">http://www.qihangnet.com/PermaLink,guid,92b78c16-80b7-43a2-8538-7db63ce17f07.aspx</guid>
      <link>http://www.qihangnet.com/PermaLink,guid,92b78c16-80b7-43a2-8538-7db63ce17f07.aspx</link>
      <pubDate>Wed, 23 Mar 2005 09:08:34 GMT</pubDate>
      <description>&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #008200"&gt;//***********************************************************&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//*名称：一个程序详细研究DataReader,同时显示Command用法&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//*功能：演示DataReader的各项操作。&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//*说明：如果需要文字说明请查看我的BLOG里面关于ado.net的文章&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//*作者：雪冬寒&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//*BOLG：http://blog.csdn.net/bineon&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//***********************************************************&amp;nbsp;&lt;/span&gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Data;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Data.SqlClient;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Data.OleDb;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;SqlReader&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;const&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;connStr&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"data&amp;nbsp;source=bineon;user&amp;nbsp;id=sa;password=87345587;initial&amp;nbsp;catalog=contract"&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
&amp;nbsp;SqlConnection&amp;nbsp;conn;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;SqlReader()&amp;nbsp;&lt;br&gt;
&amp;nbsp;{&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;conn&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;SqlConnection(connStr);&amp;nbsp;&lt;br&gt;
&amp;nbsp;}&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//**************************************&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//*演示DataReader的两种取值方法&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//**************************************&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;basicReader()&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;sql=&lt;span style="COLOR: #848284"&gt;"select&amp;nbsp;*&amp;nbsp;from&amp;nbsp;friend"&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;SqlCommand&amp;nbsp;cmd;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;cmd&amp;nbsp;=&amp;nbsp;conn.CreateCommand();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;cmd.CommandText&amp;nbsp;=&amp;nbsp;sql;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;conn.Open();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;SqlDataReader&amp;nbsp;reader&amp;nbsp;=&amp;nbsp;cmd.ExecuteReader();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;while&lt;/span&gt;(reader.Read())&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"No:&amp;nbsp;0}\tName:&amp;nbsp;1}\tPhoneNum:&amp;nbsp;2},\tAddress:&amp;nbsp;3}"&lt;/span&gt;,reader.GetInt32(0).ToString(),reader.GetString(1),reader[2].ToString(),reader[&lt;span style="COLOR: #848284"&gt;"Faddress"&lt;/span&gt;].ToString());&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;showSplit();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;reader.Close();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;conn.Close();&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//**************************************&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//*演示带参数查询的操作，使用SqlCilent&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//**************************************&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;hasParamReader()&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;SqlCommand&amp;nbsp;cmd;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;cmd&amp;nbsp;=&amp;nbsp;conn.CreateCommand();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;sql&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"select&amp;nbsp;Fname,Fphone,Faddress&amp;nbsp;from&amp;nbsp;friend&amp;nbsp;where&amp;nbsp;Fid&amp;nbsp;&amp;gt;&amp;nbsp;@Fid"&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;cmd.CommandText&amp;nbsp;=&amp;nbsp;sql;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;SqlParameter&amp;nbsp;param&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;SqlParameter(&lt;span style="COLOR: #848284"&gt;"@Fid"&lt;/span&gt;,SqlDbType.Int,4);&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;param.value&amp;nbsp;=&amp;nbsp;15;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;cmd.Parameters.Add(param);&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;conn.Open();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #008200"&gt;//当关闭reader的时候同时关闭数据库连接&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;SqlDataReader&amp;nbsp;reader&amp;nbsp;=&amp;nbsp;cmd.ExecuteReader(CommandBehavior.CloseConnection);&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;while&lt;/span&gt;(reader.Read())&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"Name:&amp;nbsp;0}\tPhoneNum:&amp;nbsp;1}\tAddress:&amp;nbsp;2}"&lt;/span&gt;,reader.GetString(0),reader.GetString(1),reader.GetString(2));&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;showSplit();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #008200"&gt;//无需关闭conn,系统会自动调用这个方法来关闭conn的。&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;reader.Close();&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//**************************************&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//*演示带参数查询的操作,使用OleDb&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//**************************************&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;hasOledbParamReader()&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;SqlCommand&amp;nbsp;cmd;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;cmd&amp;nbsp;=&amp;nbsp;conn.CreateCommand();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;sql&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"select&amp;nbsp;Fname,Fphone,Faddress&amp;nbsp;from&amp;nbsp;friend&amp;nbsp;where&amp;nbsp;Fid&amp;nbsp;&amp;gt;&amp;nbsp;?"&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;oledbConnStr&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"Provider=sqloledb;"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;connStr;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;OleDbConnection&amp;nbsp;oleConn&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;OleDbConnection(oledbConnStr);&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;OleDbCommand&amp;nbsp;oleCmd&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;OleDbCommand(sql,oleConn);&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;oleCmd.Parameters.Add(&lt;span style="COLOR: #848284"&gt;"nothing"&lt;/span&gt;,15);&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;oleConn.Open();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;OleDbDataReader&amp;nbsp;oleReader&amp;nbsp;=&amp;nbsp;oleCmd.ExecuteReader();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;while&lt;/span&gt;(oleReader.Read())&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"Name:&amp;nbsp;0}\tPhoneNum:&amp;nbsp;1}\tAddress:&amp;nbsp;2}"&lt;/span&gt;,oleReader.GetString(0),oleReader.GetString(1),oleReader.GetString(2));&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;showSplit();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;oleReader.Close();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;oleConn.Close();&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//**************************************&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//*演示存储过程的输出参数&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//**************************************&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;outParamShow()&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;SqlCommand&amp;nbsp;cmd;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;cmd&amp;nbsp;=&amp;nbsp;conn.CreateCommand();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;cmd.CommandText&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"GetInfo"&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;cmd.CommandType&amp;nbsp;=&amp;nbsp;CommandType.StoredProcedure;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;SqlParameter&amp;nbsp;param&amp;nbsp;=&amp;nbsp;cmd.Parameters.Add(&lt;span style="COLOR: #848284"&gt;"@Fid"&lt;/span&gt;,16);&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;param&amp;nbsp;=&amp;nbsp;cmd.Parameters.Add(&lt;span style="COLOR: #848284"&gt;"@Fname"&lt;/span&gt;,SqlDbType.VarChar,8);&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;param.Direction&amp;nbsp;=&amp;nbsp;ParameterDirection.Output;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;param&amp;nbsp;=&amp;nbsp;cmd.Parameters.Add(&lt;span style="COLOR: #848284"&gt;"@Fphone"&lt;/span&gt;,SqlDbType.VarChar,8);&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;param.Direction&amp;nbsp;=&amp;nbsp;ParameterDirection.Output;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;conn.Open();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;cmd.ExecuteNonQuery();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;Fname&amp;nbsp;=&amp;nbsp;cmd.Parameters[&lt;span style="COLOR: #848284"&gt;"@Fname"&lt;/span&gt;].value.ToString();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;Fphone&amp;nbsp;=&amp;nbsp;cmd.Parameters[&lt;span style="COLOR: #848284"&gt;"@Fphone"&lt;/span&gt;].value.ToString();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;Console.WriteLine(Fname&amp;nbsp;+&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"&amp;nbsp;&amp;nbsp;"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;Fphone);&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;conn.Close();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;showSplit();&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//**************************************&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//*演示读取多个无关记录集&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//**************************************&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;multiResult()&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;SqlCommand&amp;nbsp;cmd;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;cmd&amp;nbsp;=&amp;nbsp;conn.CreateCommand();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;sqla&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"select&amp;nbsp;Fname&amp;nbsp;from&amp;nbsp;friend"&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;sqlb&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"select&amp;nbsp;Fphone&amp;nbsp;from&amp;nbsp;friend"&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;cmd.CommandText&amp;nbsp;=&amp;nbsp;sqla&amp;nbsp;+&amp;nbsp;&lt;span style="COLOR: #848284"&gt;";"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;sqlb;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;conn.Open();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;SqlDataReader&amp;nbsp;reader=&amp;nbsp;cmd.ExecuteReader();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&amp;nbsp;i&amp;nbsp;=&amp;nbsp;1;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;do&lt;/span&gt;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"第"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;i.ToString()&amp;nbsp;+&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"个记录集内容如下：\n"&lt;/span&gt;);&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;while&lt;/span&gt;(reader.Read())&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(reader[0].ToString()&amp;nbsp;+&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"\t"&lt;/span&gt;);&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;i++;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;}&lt;span style="COLOR: #0000ff"&gt;while&lt;/span&gt;(reader.NextResult());&amp;nbsp;&lt;span style="COLOR: #008200"&gt;//NextResult()移动到下一个记录集&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;reader.Close();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;conn.Close();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;showSplit();&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//**************************************&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//*使用DataReader获得数据库模式信息&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//**************************************&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;getSchema()&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;SqlCommand&amp;nbsp;cmd;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;cmd&amp;nbsp;=&amp;nbsp;conn.CreateCommand();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;sql&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"select&amp;nbsp;Fid,Fname,Fphone&amp;nbsp;from&amp;nbsp;friend"&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cmd.CommandText&amp;nbsp;=&amp;nbsp;sql;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;conn.Open();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SqlDataReader&amp;nbsp;reader&amp;nbsp;=&amp;nbsp;cmd.ExecuteReader();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DataTable&amp;nbsp;SchemaTable&amp;nbsp;=&amp;nbsp;reader.GetSchemaTable();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DataRowCollection&amp;nbsp;SchemaColumns&amp;nbsp;=&amp;nbsp;SchemaTable.Rows;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DataColumnCollection&amp;nbsp;SchemaProps&amp;nbsp;=&amp;nbsp;SchemaTable.Columns;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;foreach&lt;/span&gt;(DataRow&amp;nbsp;SchemaColumn&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&amp;nbsp;SchemaColumns)&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;foreach&lt;/span&gt;(DataColumn&amp;nbsp;SchemaColumnProp&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&amp;nbsp;SchemaProps)&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(SchemaColumnProp.ColumnName&amp;nbsp;+&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"="&lt;/span&gt;&amp;nbsp;+&amp;nbsp;SchemaColumn[SchemaColumnProp.ColumnName].ToString());&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;reader.Close();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;conn.Close();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;showSplit();&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//**************************************&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//*从数据库读取二进制数据的代码段&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//*该代码段只是读取二进制的片断，不是&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//*整个程序，所以不能执行，你可以把它&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//*集成到你的WinForm项目里面。&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//**************************************&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;getBinary()&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;span style="COLOR: #008200"&gt;/*&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;System.IO.MemoryStream&amp;nbsp;stream&amp;nbsp;=&amp;nbsp;new&amp;nbsp;System.IO.MemoryStream();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;System.IO.BinaryWriter&amp;nbsp;writer&amp;nbsp;=&amp;nbsp;new&amp;nbsp;System.IO.BinaryWriter(stream);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;int&amp;nbsp;BufferSize&amp;nbsp;=&amp;nbsp;1024;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;byte[]&amp;nbsp;Buffer&amp;nbsp;=&amp;nbsp;new&amp;nbsp;Byte[BufferSize];&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;long&amp;nbsp;Offset&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;long&amp;nbsp;BytesRead&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;do&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;BytesRead&amp;nbsp;=&amp;nbsp;reader.GetBytes(2,Offset,Buffer,0,BufferSize);&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;writer.Writer(Buffer,0,(int)BytesRead);&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;writer.Flush();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Offset&amp;nbsp;+=&amp;nbsp;BytesRead;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;while(BytesRead&amp;nbsp;==&amp;nbsp;BufferSize);&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;*/&lt;/span&gt;&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//添加输出分隔&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;showSplit()&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"\n********************************************************************\n"&lt;/span&gt;);&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Main(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;[]&amp;nbsp;args)&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;SqlReader&amp;nbsp;sqlreader&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;SqlReader();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;sqlreader.basicReader();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;sqlreader.hasParamReader();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;sqlreader.hasOledbParamReader();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;sqlreader.outParamShow();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;sqlreader.multiResult();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;sqlreader.getSchema();&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
}&lt;/span&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.qihangnet.com"&gt;Qihangnet&lt;/a&gt;. </description>
      <comments>http://www.qihangnet.com/CommentView,guid,92b78c16-80b7-43a2-8538-7db63ce17f07.aspx</comments>
      <category>CSharp</category>
      <category>DATABASE</category>
    </item>
    <item>
      <trackback:ping>http://www.qihangnet.com/Trackback.aspx?guid=897d5ae4-fcfc-43e7-b453-a2b72e2df84a</trackback:ping>
      <pingback:server>http://www.qihangnet.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.qihangnet.com/PermaLink,guid,897d5ae4-fcfc-43e7-b453-a2b72e2df84a.aspx</pingback:target>
      <dc:creator>衣明志</dc:creator>
      <wfw:comment>http://www.qihangnet.com/CommentView,guid,897d5ae4-fcfc-43e7-b453-a2b72e2df84a.aspx</wfw:comment>
      <wfw:commentRss>http://www.qihangnet.com/SyndicationService.asmx/GetEntryCommentsRss?guid=897d5ae4-fcfc-43e7-b453-a2b72e2df84a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">以下分别是使用了不同的加密方法加密/解密字符串：DES HMACSHA1 SHA1 RC2 MD5 等,待续 
<br /><span style="COLOR: #000000"><span style="COLOR: #0000ff">using</span> System; <br /><span style="COLOR: #0000ff">using</span> System.IO; <br /><span style="COLOR: #0000ff">using</span> System.Text; <br /><span style="COLOR: #0000ff">using</span> System.Security.Cryptography; <br /><br /><span style="COLOR: #0000ff">namespace</span> Crypt <br />
{ <br /><span style="COLOR: #0000ff">class</span> Crypt <br />
{ <br /><br />
[STAThread] <br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">void</span> Main(<span style="COLOR: #0000ff">string</span>[] args) <br />
{ <br /><span style="COLOR: #0000ff">string</span> Line; <br /><span style="COLOR: #0000ff">string</span> Key; <br /><span style="COLOR: #0000ff">string</span> IV; <br /><span style="COLOR: #0000ff">string</span> Text; <br />
Console.WriteLine(<span style="COLOR: #848284">"Input DES,SHA1 key:"</span>); <br />
Key=Console.ReadLine()+<span style="COLOR: #848284">" "</span>; <br />
Key=Key.Substring(0,8); <br />
Console.WriteLine(<span style="COLOR: #848284">"Input DES IV:"</span>); <br />
IV=Console.ReadLine()+<span style="COLOR: #848284">" "</span>; <br />
IV=Key.Substring(0,8); <br />
Console.WriteLine(<span style="COLOR: #848284">"Input text:"</span>); <br />
Text=Console.ReadLine(); <br />
Line=Crypt.DESEncrypt(Text,Key,IV); <br /><span style="COLOR: #008200">//DES Crypt <br /></span><br />
Console.WriteLine(<span style="COLOR: #848284">"DES Crypt:{0}"</span>,Line); <br /><span style="COLOR: #008200">//MD5 Crypt <br /></span><br />
Console.WriteLine(<span style="COLOR: #848284">"MD5 Crypt:{0}"</span>,Crypt.MD5Encrypt(Text)); <br /><span style="COLOR: #008200">//HMACSHA1 Crypt <br /></span><br />
Console.WriteLine(<span style="COLOR: #848284">"HMACSHA1 Crypt:{0}"</span>,Crypt.HMACSHA1Encrypt(Text,Key)); <br /><span style="COLOR: #008200">//SHA1 Crypt <br /></span><br />
Console.WriteLine(<span style="COLOR: #848284">"SHA1 Crypt:{0}"</span>,Crypt.SHA1Encrypt(Text)); <br /><span style="COLOR: #008200">//RC2 Crypt <br /></span><br />
RC2 myRC2=<span style="COLOR: #0000ff">new</span> RC2(Text); <br />
Console.WriteLine(<span style="COLOR: #848284">"RC2 Crypt:{0}"</span>,myRC2.RC2Encrypt()); <br /><span style="COLOR: #008200">/* <br />
Start decrypt <br />
*/</span> <br />
Console.WriteLine(<span style="COLOR: #848284">"Press any key to decrypt."</span>); <br />
Console.ReadLine(); <br /><span style="COLOR: #008200">//DES decrypt <br /></span><br />
Console.WriteLine(<span style="COLOR: #848284">"DES decrypt:{0}"</span>,Crypt.DESDecrypt(Line,Key,IV)); <br /><span style="COLOR: #008200">//RC2 decrypt <br /></span><br />
Console.WriteLine(<span style="COLOR: #848284">"RC2 decrypt:{0}"</span>,myRC2.RC2Decrypt()); <br />
Console.WriteLine(<span style="COLOR: #848284">"Press any key to exit."</span>); <br />
Console.ReadLine(); <br />
} <br /><br /><span style="COLOR: #0000ff">class</span> RC2 <br />
{ <br /><span style="COLOR: #0000ff">private</span> <span style="COLOR: #0000ff">byte</span>[] Key; <br /><span style="COLOR: #0000ff">private</span> <span style="COLOR: #0000ff">byte</span>[] IV; <br /><span style="COLOR: #0000ff">private</span> <span style="COLOR: #0000ff">byte</span>[] orgText; <br /><span style="COLOR: #0000ff">private</span> <span style="COLOR: #0000ff">byte</span>[] encryptText; <br /><span style="COLOR: #0000ff">private</span> <span style="COLOR: #0000ff">byte</span>[] decryptText; <br /><span style="COLOR: #0000ff">public</span> RC2(<span style="COLOR: #0000ff">string</span> rc2Text) <br />
{ <br />
orgText=Encoding.Default.GetBytes(rc2Text); <br />
RC2CryptoServiceProvider myRC2=<span style="COLOR: #0000ff">new</span> RC2CryptoServiceProvider(); <br />
myRC2.GenerateIV(); <br />
myRC2.GenerateKey(); <br />
Key=myRC2.Key; <br />
IV=myRC2.IV; <br />
} <br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">string</span> RC2Encrypt() <br />
{ <br />
RC2CryptoServiceProvider myRC2=<span style="COLOR: #0000ff">new</span> RC2CryptoServiceProvider(); <br />
ICryptoTransform myCryptoTrans=myRC2.CreateEncryptor(Key,IV); <br />
MemoryStream MStream=<span style="COLOR: #0000ff">new</span> MemoryStream(); <br />
CryptoStream CStream=<span style="COLOR: #0000ff">new</span> CryptoStream(MStream,myCryptoTrans,CryptoStreamMode.Write); <br />
CStream.Write(orgText,0,orgText.Length); <br />
CStream.FlushFinalBlock(); <br />
StringBuilder EnText=<span style="COLOR: #0000ff">new</span> StringBuilder(); <br />
encryptText=MStream.ToArray(); <br /><span style="COLOR: #0000ff">foreach</span>(<span style="COLOR: #0000ff">byte</span> Byte <span style="COLOR: #0000ff">in</span> encryptText) <br />
{ <br />
EnText.AppendFormat(<span style="COLOR: #848284">"{0:x2}"</span>,Byte); <br />
} <br />
CStream.Close(); <br /><span style="COLOR: #0000ff">return</span> EnText.ToString(); <br />
} <br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">string</span> RC2Decrypt() <br />
{ <br />
RC2CryptoServiceProvider myRC2=<span style="COLOR: #0000ff">new</span> RC2CryptoServiceProvider(); <br />
ICryptoTransform myCryptoTrans=myRC2.CreateDecryptor(Key,IV); <br />
MemoryStream MStream=<span style="COLOR: #0000ff">new</span> MemoryStream(encryptText); <br />
CryptoStream CStream=<span style="COLOR: #0000ff">new</span> CryptoStream(MStream,myCryptoTrans,CryptoStreamMode.Read); <br />
decryptText=<span style="COLOR: #0000ff">new</span> <span style="COLOR: #0000ff">byte</span>[encryptText.Length]; <br />
CStream.Read(decryptText,0,decryptText.Length); <br />
StringBuilder EnText=<span style="COLOR: #0000ff">new</span> StringBuilder(); <br />
CStream.Close(); <br />
ASCIIEncoding myText=<span style="COLOR: #0000ff">new</span> ASCIIEncoding(); <br /><span style="COLOR: #0000ff">return</span> myText.GetString(decryptText); <br />
} <br />
} <br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">string</span> SHA1Encrypt(<span style="COLOR: #0000ff">string</span> EncryptText) <br />
{ <br /><span style="COLOR: #0000ff">byte</span>[] StrRes=Encoding.Default.GetBytes(EncryptText); <br />
HashAlgorithm mySHA=<span style="COLOR: #0000ff">new</span> SHA1CryptoServiceProvider(); <br />
StrRes=mySHA.ComputeHash(StrRes); <br />
StringBuilder EnText=<span style="COLOR: #0000ff">new</span> StringBuilder(); <br /><span style="COLOR: #0000ff">foreach</span>(<span style="COLOR: #0000ff">byte</span> Byte <span style="COLOR: #0000ff">in</span> StrRes) <br />
{ <br />
EnText.AppendFormat(<span style="COLOR: #848284">"{0:x2}"</span>,Byte); <br />
} <br /><span style="COLOR: #0000ff">return</span> EnText.ToString(); <br />
} <br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">string</span> HMACSHA1Encrypt(<span style="COLOR: #0000ff">string</span> EncryptText,<span style="COLOR: #0000ff">string</span> EncryptKey) <br />
{ <br /><span style="COLOR: #0000ff">byte</span>[] StrRes=Encoding.Default.GetBytes(EncryptText); <br />
HMACSHA1 myHMACSHA1=<span style="COLOR: #0000ff">new</span> HMACSHA1(Encoding.Default.GetBytes(EncryptKey)); <br />
CryptoStream CStream=<span style="COLOR: #0000ff">new</span> CryptoStream(Stream.Null,myHMACSHA1,CryptoStreamMode.Write); <br />
CStream.Write(StrRes,0,StrRes.Length); <br />
StringBuilder EnText=<span style="COLOR: #0000ff">new</span> StringBuilder(); <br /><span style="COLOR: #0000ff">foreach</span>(<span style="COLOR: #0000ff">byte</span> Byte <span style="COLOR: #0000ff">in</span> StrRes) <br />
{ <br />
EnText.AppendFormat(<span style="COLOR: #848284">"{0:x2}"</span>,Byte); <br />
} <br /><span style="COLOR: #0000ff">return</span> EnText.ToString(); <br />
} <br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">string</span> MD5Encrypt(<span style="COLOR: #0000ff">string</span> CryptText) <br />
{ <br />
MD5 myMD5=<span style="COLOR: #0000ff">new</span> MD5CryptoServiceProvider(); <br /><span style="COLOR: #0000ff">byte</span>[] HashCode; <br />
HashCode=Encoding.Default.GetBytes(CryptText); <br />
HashCode=myMD5.ComputeHash(HashCode); <br />
StringBuilder EnText=<span style="COLOR: #0000ff">new</span> StringBuilder(); <br /><span style="COLOR: #0000ff">foreach</span>(<span style="COLOR: #0000ff">byte</span> Byte <span style="COLOR: #0000ff">in</span> HashCode) <br />
{ <br />
EnText.AppendFormat(<span style="COLOR: #848284">"{0:x2}"</span>,Byte); <br />
} <br /><span style="COLOR: #0000ff">return</span> EnText.ToString(); <br />
} <br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">string</span> DESEncrypt(<span style="COLOR: #0000ff">string</span> CryptText, <span style="COLOR: #0000ff">string</span> CryptKey,<span style="COLOR: #0000ff">string</span> CryptIV) <br />
{ <br />
DESCryptoServiceProvider des = <span style="COLOR: #0000ff">new</span> DESCryptoServiceProvider(); <br /><span style="COLOR: #0000ff">byte</span>[] textOut = Encoding.Default.GetBytes(CryptText); <br /><span style="COLOR: #0000ff">byte</span>[] DESKey=ASCIIEncoding.ASCII.GetBytes(CryptKey); <br /><span style="COLOR: #0000ff">byte</span>[] DESIV=ASCIIEncoding.ASCII.GetBytes(CryptKey); <br />
MemoryStream MStream = <span style="COLOR: #0000ff">new</span> MemoryStream(); <br />
CryptoStream CStream = <span style="COLOR: #0000ff">new</span> CryptoStream(MStream, des.CreateEncryptor(DESKey,DESIV),CryptoStreamMode.Write); <br />
CStream.Write(textOut, 0, textOut.Length); <br />
CStream.FlushFinalBlock(); <br />
StringBuilder StrRes = <span style="COLOR: #0000ff">new</span> StringBuilder(); <br /><span style="COLOR: #0000ff">foreach</span>(<span style="COLOR: #0000ff">byte</span> Byte <span style="COLOR: #0000ff">in</span> MStream.ToArray()) <br />
{ <br />
StrRes.AppendFormat(<span style="COLOR: #848284">"{0:x2}"</span>, Byte); <br />
} <br /><span style="COLOR: #0000ff">return</span> StrRes.ToString(); <br />
} <br /><br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">string</span> DESDecrypt(<span style="COLOR: #0000ff">string</span> CryptText, <span style="COLOR: #0000ff">string</span> CryptKey,<span style="COLOR: #0000ff">string</span> CryptIV) <br />
{ <br />
DESCryptoServiceProvider des = <span style="COLOR: #0000ff">new</span> DESCryptoServiceProvider(); <br /><span style="COLOR: #0000ff">byte</span>[] textOut = <span style="COLOR: #0000ff">new</span> <span style="COLOR: #0000ff">byte</span>[CryptText.Length / 2]; <br /><span style="COLOR: #0000ff">for</span>(<span style="COLOR: #0000ff">int</span> Count = 0; Count &lt; CryptText.Length; Count+=2) <br />
{ <br />
textOut[Count/2] = (<span style="COLOR: #0000ff">byte</span>)(Convert.ToInt32(CryptText.Substring(Count , 2), 16)); <br />
} <br /><span style="COLOR: #0000ff">byte</span>[] DESKey=ASCIIEncoding.ASCII.GetBytes(CryptKey); <br /><span style="COLOR: #0000ff">byte</span>[] DESIV=ASCIIEncoding.ASCII.GetBytes(CryptIV); <br />
MemoryStream MStream = <span style="COLOR: #0000ff">new</span> MemoryStream(); <br />
CryptoStream CStream = <span style="COLOR: #0000ff">new</span> CryptoStream(MStream, des.CreateDecryptor(DESKey,DESIV),CryptoStreamMode.Write); <br />
CStream.Write(textOut, 0, textOut.Length); <br />
CStream.FlushFinalBlock(); <br /><span style="COLOR: #0000ff">return</span> System.Text.Encoding.Default.GetString(MStream.ToArray()); <br />
} <br />
} <br />
} <br /><br /><br />
调试结果 <br />
================ <br />
Input DES,SHA1 key: <br />
hello <br />
Input DES IV: <br />
world <br />
Input text: <br />
I am a boy my name <span style="COLOR: #0000ff">is</span> DexiangWu <br />
DES Crypt:9e701e4e8f55714bc68253d2ddf53fb6fd6a64df7f6b78f9491a64df18113642 <br />
MD5 Crypt:f7d88e861602d2e1e0992dd70967314e <br />
HMACSHA1 Crypt:4920616d206120626f79206d79206e616d652069732044657869616e675775 <br />
SHA1 Crypt:d5b25333f3e01ba96ac281e111af08701a7ccfb0 <br />
RC2 Crypt:82cc5c822272a721db753e15d918c0d20e62322316fdd4a4d881b8eb03ff55e3 <br />
Press any key to decrypt. <br /><br />
DES decrypt:I am a boy my name <span style="COLOR: #0000ff">is</span> DexiangWu <br />
RC2 decrypt:I am a boy my name <span style="COLOR: #0000ff">is</span> DexiangWu</span><br /><hr />
This weblog is sponsored by <a href="http://www.qihangnet.com">Qihangnet</a>. 
</body>
      <title>C#中使用DES HMACSHA1 SHA1 RC2 MD5 进行字符串加密的例程</title>
      <guid isPermaLink="false">http://www.qihangnet.com/PermaLink,guid,897d5ae4-fcfc-43e7-b453-a2b72e2df84a.aspx</guid>
      <link>http://www.qihangnet.com/PermaLink,guid,897d5ae4-fcfc-43e7-b453-a2b72e2df84a.aspx</link>
      <pubDate>Wed, 23 Mar 2005 08:50:09 GMT</pubDate>
      <description>以下分别是使用了不同的加密方法加密/解密字符串：DES&amp;nbsp;HMACSHA1&amp;nbsp;SHA1&amp;nbsp;RC2&amp;nbsp;MD5&amp;nbsp;等,待续 &lt;br&gt;
&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.IO;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Text;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Security.Cryptography;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;namespace&lt;/span&gt;&amp;nbsp;Crypt&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;Crypt&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;br&gt;
[STAThread]&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Main(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;[]&amp;nbsp;args)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;Line;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;Key;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;IV;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;Text;&amp;nbsp;&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"Input&amp;nbsp;DES,SHA1&amp;nbsp;key:"&lt;/span&gt;);&amp;nbsp;&lt;br&gt;
Key=Console.ReadLine()+&lt;span style="COLOR: #848284"&gt;"&amp;nbsp;"&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
Key=Key.Substring(0,8);&amp;nbsp;&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"Input&amp;nbsp;DES&amp;nbsp;IV:"&lt;/span&gt;);&amp;nbsp;&lt;br&gt;
IV=Console.ReadLine()+&lt;span style="COLOR: #848284"&gt;"&amp;nbsp;"&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
IV=Key.Substring(0,8);&amp;nbsp;&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"Input&amp;nbsp;text:"&lt;/span&gt;);&amp;nbsp;&lt;br&gt;
Text=Console.ReadLine();&amp;nbsp;&lt;br&gt;
Line=Crypt.DESEncrypt(Text,Key,IV);&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//DES&amp;nbsp;Crypt&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"DES&amp;nbsp;Crypt:{0}"&lt;/span&gt;,Line);&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//MD5&amp;nbsp;Crypt&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"MD5&amp;nbsp;Crypt:{0}"&lt;/span&gt;,Crypt.MD5Encrypt(Text));&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//HMACSHA1&amp;nbsp;Crypt&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"HMACSHA1&amp;nbsp;Crypt:{0}"&lt;/span&gt;,Crypt.HMACSHA1Encrypt(Text,Key));&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//SHA1&amp;nbsp;Crypt&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"SHA1&amp;nbsp;Crypt:{0}"&lt;/span&gt;,Crypt.SHA1Encrypt(Text));&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//RC2&amp;nbsp;Crypt&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
RC2&amp;nbsp;myRC2=&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;RC2(Text);&amp;nbsp;&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"RC2&amp;nbsp;Crypt:{0}"&lt;/span&gt;,myRC2.RC2Encrypt());&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;/*&amp;nbsp;&lt;br&gt;
Start&amp;nbsp;decrypt&amp;nbsp;&lt;br&gt;
*/&lt;/span&gt;&amp;nbsp;&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"Press&amp;nbsp;any&amp;nbsp;key&amp;nbsp;to&amp;nbsp;decrypt."&lt;/span&gt;);&amp;nbsp;&lt;br&gt;
Console.ReadLine();&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//DES&amp;nbsp;decrypt&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"DES&amp;nbsp;decrypt:{0}"&lt;/span&gt;,Crypt.DESDecrypt(Line,Key,IV));&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//RC2&amp;nbsp;decrypt&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"RC2&amp;nbsp;decrypt:{0}"&lt;/span&gt;,myRC2.RC2Decrypt());&amp;nbsp;&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"Press&amp;nbsp;any&amp;nbsp;key&amp;nbsp;to&amp;nbsp;exit."&lt;/span&gt;);&amp;nbsp;&lt;br&gt;
Console.ReadLine();&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;RC2&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;[]&amp;nbsp;Key;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;[]&amp;nbsp;IV;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;[]&amp;nbsp;orgText;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;[]&amp;nbsp;encryptText;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;[]&amp;nbsp;decryptText;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;RC2(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;rc2Text)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
orgText=Encoding.Default.GetBytes(rc2Text);&amp;nbsp;&lt;br&gt;
RC2CryptoServiceProvider&amp;nbsp;myRC2=&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;RC2CryptoServiceProvider();&amp;nbsp;&lt;br&gt;
myRC2.GenerateIV();&amp;nbsp;&lt;br&gt;
myRC2.GenerateKey();&amp;nbsp;&lt;br&gt;
Key=myRC2.Key;&amp;nbsp;&lt;br&gt;
IV=myRC2.IV;&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;RC2Encrypt()&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
RC2CryptoServiceProvider&amp;nbsp;myRC2=&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;RC2CryptoServiceProvider();&amp;nbsp;&lt;br&gt;
ICryptoTransform&amp;nbsp;myCryptoTrans=myRC2.CreateEncryptor(Key,IV);&amp;nbsp;&lt;br&gt;
MemoryStream&amp;nbsp;MStream=&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;MemoryStream();&amp;nbsp;&lt;br&gt;
CryptoStream&amp;nbsp;CStream=&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;CryptoStream(MStream,myCryptoTrans,CryptoStreamMode.Write);&amp;nbsp;&lt;br&gt;
CStream.Write(orgText,0,orgText.Length);&amp;nbsp;&lt;br&gt;
CStream.FlushFinalBlock();&amp;nbsp;&lt;br&gt;
StringBuilder&amp;nbsp;EnText=&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;StringBuilder();&amp;nbsp;&lt;br&gt;
encryptText=MStream.ToArray();&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;foreach&lt;/span&gt;(&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;&amp;nbsp;Byte&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&amp;nbsp;encryptText)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
EnText.AppendFormat(&lt;span style="COLOR: #848284"&gt;"{0:x2}"&lt;/span&gt;,Byte);&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
CStream.Close();&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&amp;nbsp;EnText.ToString();&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;RC2Decrypt()&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
RC2CryptoServiceProvider&amp;nbsp;myRC2=&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;RC2CryptoServiceProvider();&amp;nbsp;&lt;br&gt;
ICryptoTransform&amp;nbsp;myCryptoTrans=myRC2.CreateDecryptor(Key,IV);&amp;nbsp;&lt;br&gt;
MemoryStream&amp;nbsp;MStream=&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;MemoryStream(encryptText);&amp;nbsp;&lt;br&gt;
CryptoStream&amp;nbsp;CStream=&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;CryptoStream(MStream,myCryptoTrans,CryptoStreamMode.Read);&amp;nbsp;&lt;br&gt;
decryptText=&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;[encryptText.Length];&amp;nbsp;&lt;br&gt;
CStream.Read(decryptText,0,decryptText.Length);&amp;nbsp;&lt;br&gt;
StringBuilder&amp;nbsp;EnText=&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;StringBuilder();&amp;nbsp;&lt;br&gt;
CStream.Close();&amp;nbsp;&lt;br&gt;
ASCIIEncoding&amp;nbsp;myText=&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;ASCIIEncoding();&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&amp;nbsp;myText.GetString(decryptText);&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;SHA1Encrypt(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;EncryptText)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;[]&amp;nbsp;StrRes=Encoding.Default.GetBytes(EncryptText);&amp;nbsp;&lt;br&gt;
HashAlgorithm&amp;nbsp;mySHA=&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;SHA1CryptoServiceProvider();&amp;nbsp;&lt;br&gt;
StrRes=mySHA.ComputeHash(StrRes);&amp;nbsp;&lt;br&gt;
StringBuilder&amp;nbsp;EnText=&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;StringBuilder();&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;foreach&lt;/span&gt;(&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;&amp;nbsp;Byte&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&amp;nbsp;StrRes)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
EnText.AppendFormat(&lt;span style="COLOR: #848284"&gt;"{0:x2}"&lt;/span&gt;,Byte);&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&amp;nbsp;EnText.ToString();&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;HMACSHA1Encrypt(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;EncryptText,&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;EncryptKey)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;[]&amp;nbsp;StrRes=Encoding.Default.GetBytes(EncryptText);&amp;nbsp;&lt;br&gt;
HMACSHA1&amp;nbsp;myHMACSHA1=&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;HMACSHA1(Encoding.Default.GetBytes(EncryptKey));&amp;nbsp;&lt;br&gt;
CryptoStream&amp;nbsp;CStream=&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;CryptoStream(Stream.Null,myHMACSHA1,CryptoStreamMode.Write);&amp;nbsp;&lt;br&gt;
CStream.Write(StrRes,0,StrRes.Length);&amp;nbsp;&lt;br&gt;
StringBuilder&amp;nbsp;EnText=&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;StringBuilder();&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;foreach&lt;/span&gt;(&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;&amp;nbsp;Byte&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&amp;nbsp;StrRes)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
EnText.AppendFormat(&lt;span style="COLOR: #848284"&gt;"{0:x2}"&lt;/span&gt;,Byte);&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&amp;nbsp;EnText.ToString();&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;MD5Encrypt(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;CryptText)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
MD5&amp;nbsp;myMD5=&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;MD5CryptoServiceProvider();&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;[]&amp;nbsp;HashCode;&amp;nbsp;&lt;br&gt;
HashCode=Encoding.Default.GetBytes(CryptText);&amp;nbsp;&lt;br&gt;
HashCode=myMD5.ComputeHash(HashCode);&amp;nbsp;&lt;br&gt;
StringBuilder&amp;nbsp;EnText=&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;StringBuilder();&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;foreach&lt;/span&gt;(&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;&amp;nbsp;Byte&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&amp;nbsp;HashCode)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
EnText.AppendFormat(&lt;span style="COLOR: #848284"&gt;"{0:x2}"&lt;/span&gt;,Byte);&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&amp;nbsp;EnText.ToString();&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;DESEncrypt(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;CryptText,&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;CryptKey,&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;CryptIV)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
DESCryptoServiceProvider&amp;nbsp;des&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;DESCryptoServiceProvider();&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;[]&amp;nbsp;textOut&amp;nbsp;=&amp;nbsp;Encoding.Default.GetBytes(CryptText);&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;[]&amp;nbsp;DESKey=ASCIIEncoding.ASCII.GetBytes(CryptKey);&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;[]&amp;nbsp;DESIV=ASCIIEncoding.ASCII.GetBytes(CryptKey);&amp;nbsp;&lt;br&gt;
MemoryStream&amp;nbsp;MStream&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;MemoryStream();&amp;nbsp;&lt;br&gt;
CryptoStream&amp;nbsp;CStream&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;CryptoStream(MStream,&amp;nbsp;des.CreateEncryptor(DESKey,DESIV),CryptoStreamMode.Write);&amp;nbsp;&lt;br&gt;
CStream.Write(textOut,&amp;nbsp;0,&amp;nbsp;textOut.Length);&amp;nbsp;&lt;br&gt;
CStream.FlushFinalBlock();&amp;nbsp;&lt;br&gt;
StringBuilder&amp;nbsp;StrRes&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;StringBuilder();&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;foreach&lt;/span&gt;(&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;&amp;nbsp;Byte&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&amp;nbsp;MStream.ToArray())&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
StrRes.AppendFormat(&lt;span style="COLOR: #848284"&gt;"{0:x2}"&lt;/span&gt;,&amp;nbsp;Byte);&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&amp;nbsp;StrRes.ToString();&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;DESDecrypt(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;CryptText,&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;CryptKey,&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;CryptIV)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
DESCryptoServiceProvider&amp;nbsp;des&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;DESCryptoServiceProvider();&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;[]&amp;nbsp;textOut&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;[CryptText.Length&amp;nbsp;/&amp;nbsp;2];&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;for&lt;/span&gt;(&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&amp;nbsp;Count&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;Count&amp;nbsp;&amp;lt;&amp;nbsp;CryptText.Length;&amp;nbsp;Count+=2)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
textOut[Count/2]&amp;nbsp;=&amp;nbsp;(&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;)(Convert.ToInt32(CryptText.Substring(Count&amp;nbsp;,&amp;nbsp;2),&amp;nbsp;16));&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;[]&amp;nbsp;DESKey=ASCIIEncoding.ASCII.GetBytes(CryptKey);&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;byte&lt;/span&gt;[]&amp;nbsp;DESIV=ASCIIEncoding.ASCII.GetBytes(CryptIV);&amp;nbsp;&lt;br&gt;
MemoryStream&amp;nbsp;MStream&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;MemoryStream();&amp;nbsp;&lt;br&gt;
CryptoStream&amp;nbsp;CStream&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;CryptoStream(MStream,&amp;nbsp;des.CreateDecryptor(DESKey,DESIV),CryptoStreamMode.Write);&amp;nbsp;&lt;br&gt;
CStream.Write(textOut,&amp;nbsp;0,&amp;nbsp;textOut.Length);&amp;nbsp;&lt;br&gt;
CStream.FlushFinalBlock();&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&amp;nbsp;System.Text.Encoding.Default.GetString(MStream.ToArray());&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
调试结果&amp;nbsp;&lt;br&gt;
================&amp;nbsp;&lt;br&gt;
Input&amp;nbsp;DES,SHA1&amp;nbsp;key:&amp;nbsp;&lt;br&gt;
hello&amp;nbsp;&lt;br&gt;
Input&amp;nbsp;DES&amp;nbsp;IV:&amp;nbsp;&lt;br&gt;
world&amp;nbsp;&lt;br&gt;
Input&amp;nbsp;text:&amp;nbsp;&lt;br&gt;
I&amp;nbsp;am&amp;nbsp;a&amp;nbsp;boy&amp;nbsp;my&amp;nbsp;name&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;is&lt;/span&gt;&amp;nbsp;DexiangWu&amp;nbsp;&lt;br&gt;
DES&amp;nbsp;Crypt:9e701e4e8f55714bc68253d2ddf53fb6fd6a64df7f6b78f9491a64df18113642&amp;nbsp;&lt;br&gt;
MD5&amp;nbsp;Crypt:f7d88e861602d2e1e0992dd70967314e&amp;nbsp;&lt;br&gt;
HMACSHA1&amp;nbsp;Crypt:4920616d206120626f79206d79206e616d652069732044657869616e675775&amp;nbsp;&lt;br&gt;
SHA1&amp;nbsp;Crypt:d5b25333f3e01ba96ac281e111af08701a7ccfb0&amp;nbsp;&lt;br&gt;
RC2&amp;nbsp;Crypt:82cc5c822272a721db753e15d918c0d20e62322316fdd4a4d881b8eb03ff55e3&amp;nbsp;&lt;br&gt;
Press&amp;nbsp;any&amp;nbsp;key&amp;nbsp;to&amp;nbsp;decrypt.&amp;nbsp;&lt;br&gt;
&lt;br&gt;
DES&amp;nbsp;decrypt:I&amp;nbsp;am&amp;nbsp;a&amp;nbsp;boy&amp;nbsp;my&amp;nbsp;name&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;is&lt;/span&gt;&amp;nbsp;DexiangWu&amp;nbsp;&lt;br&gt;
RC2&amp;nbsp;decrypt:I&amp;nbsp;am&amp;nbsp;a&amp;nbsp;boy&amp;nbsp;my&amp;nbsp;name&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;is&lt;/span&gt;&amp;nbsp;DexiangWu&lt;/span&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.qihangnet.com"&gt;Qihangnet&lt;/a&gt;. </description>
      <comments>http://www.qihangnet.com/CommentView,guid,897d5ae4-fcfc-43e7-b453-a2b72e2df84a.aspx</comments>
      <category>CSharp</category>
    </item>
    <item>
      <trackback:ping>http://www.qihangnet.com/Trackback.aspx?guid=f1215e0c-491a-457a-8f5b-387b97ee16ed</trackback:ping>
      <pingback:server>http://www.qihangnet.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.qihangnet.com/PermaLink,guid,f1215e0c-491a-457a-8f5b-387b97ee16ed.aspx</pingback:target>
      <dc:creator>衣明志</dc:creator>
      <wfw:comment>http://www.qihangnet.com/CommentView,guid,f1215e0c-491a-457a-8f5b-387b97ee16ed.aspx</wfw:comment>
      <wfw:commentRss>http://www.qihangnet.com/SyndicationService.asmx/GetEntryCommentsRss?guid=f1215e0c-491a-457a-8f5b-387b97ee16ed</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">abstract class    抽象类 
<br />
accelerator    快捷键 
<br />
accelerator mapping    快捷键映射 
<br />
accelerator table    快捷键对应表 
<br />
access modifier    访问修饰符 
<br />
Access Pack    访问包 
<br />
access specifier    访问说明符 
<br />
access violation    访问冲突 
<br />
accessibility    辅助功能 
<br />
accessibility domain    可访问域 
<br />
Accessibility Options    辅助功能选项 
<br />
accessor    访问器 
<br />
action    操作 
<br />
Active Directory hierarchy    Active Directory 层次结构 
<br />
active document    活动文档 
<br />
Active Document Containment    活动文档包容 
<br />
active end    活动结尾 
<br />
active object    活动对象 
<br />
active point    活动点 
<br />
Active Template Library    活动模板库 
<br />
ActiveX Component    ActiveX 组件 
<br />
ActiveX control container    ActiveX 控件容器 
<br />
ActiveX Control Interface Wizard    ActiveX 控件接口向导 
<br />
ActiveX-enabled    支持 ActiveX 的 
<br />
adaptor    适配器 
<br />
Add key    加号键 
<br />
Add-In    外接程序 
<br />
Address Book    通讯簿 
<br />
address space    地址空间 
<br />
advise sink    通知接收 
<br />
aggregate    聚合 
<br />
Airbrush    喷枪 
<br />
algorithm    算法 
<br />
allocation hook    分配挂钩 
<br />
allocator    分配器 
<br />
Alternate text    替换文字,备用文本 
<br />
animation control    动画控件 
<br />
apartment-model threading    单元模型线程 
<br />
Apply Now    立即应用 
<br /><a name="more"></a><br />
apply to similar    应用到相似项 
<br />
argument    参数 
<br />
array initializer    数组初始值设定项 
<br />
array rank    数组秩 
<br />
arrow cap    箭头帽 
<br />
ArrowHourGlass    箭头沙漏 
<br />
ArrowQuestion    箭头问号 
<br />
article family    文章族 
<br />
assembly    程序集；汇编 
<br />
assembly manifest    程序集清单 
<br />
assert    断言 
<br />
associate    关联 
<br />
asynchronous moniker    异步名字对象 
<br />
asynchronous peek operation    异步查看操作 
<br />
atomic operation    原子操作 
<br />
attached table    附加表 
<br />
Attributed Component Wizard    属性化组件向导 
<br />
Attributed Programming    属性化编程 
<br />
Attributes Property    Attributes 属性 
<br />
Authentication    身份验证 
<br />
authorable    可创作（的） 
<br />
Auto completion for commands    自动完成命令 
<br />
Auto Increment    自动增加 
<br />
Auto Syntax Check    自动语法校验 
<br />
automation    自动化 
<br />
automation-enabled    启用自动化 
<br />
base implementation    基实现 
<br />
be paged to disk    分页到磁盘 
<br />
binary operator    二元运算符 
<br />
bind    绑定 
<br />
binder    联编程序 
<br />
binding constraints    绑定约束 
<br />
bit field    位域 
<br />
bitmask    位屏蔽 
<br />
bitwise    按位 
<br />
bitwise complement operator    按位求补运算符 
<br />
bit-wise equivalent    位等效数 
<br />
bitwise OR operator    位 OR 运算符 
<br />
block    块 
<br />
block if    If 块 
<br />
blocking UI    模块化用户界面 
<br />
Book Edition    试用版 
<br />
bootstrapper    引导程序 
<br />
bottom margin    下边距 
<br />
bound    界限；绑定 
<br />
bound control    绑定控件 
<br />
bounding rectangle    边框 
<br />
box    装箱 (v.) 
<br />
break    分页；分行；中断 (v.)；断点 (n.) 
<br />
break compatibility    破坏兼容性 
<br />
break execution    中断执行 
<br />
breakpoint    断点 
<br />
Bring Forward    上移一层 
<br />
Bring In Front    上移一层 
<br />
Bring to Front    置于顶层 
<br />
broker    中间装置 
<br />
Browse With    浏览方式 
<br />
bubbling    冒泡 
<br />
bucket    存储桶 
<br />
buddy    合作者 
<br />
buffer    缓冲区 
<br />
build    生成 (v.)；版本 (n.);编译 
<br />
Builder    生成器 
<br />
building block    构造块 
<br />
built-in    内置 
<br />
bulk row fetching    批量取行 
<br />
Bulleted List    项目符号列表 
<br />
business logic    业务逻辑 
<br />
business process    业务处理 
<br />
business rule    业务规则 
<br />
cache    缓存 
<br />
cacheability    可缓存性 
<br />
call    调用 
<br />
call back    回调 
<br />
call invoke    调用 invoke（调用） 
<br />
called procedure    被调用过程 
<br />
caller    调用方 
<br />
calling code    呼叫代码 
<br />
calling convention    调用约定 
<br />
calling process    调用进程 
<br />
call-out interception    调出侦听 
<br />
caption    标题 
<br />
caret    插入符号 
<br />
carriage return-linefeed    回车-换行 
<br />
cascade    层叠,级联 
<br />
case statement    case 语句 
<br />
case-sensitive    区分大小写 
<br />
cast    强制转换 
<br />
catalog    目录 
<br />
catch block    catch 块 
<br />
catch handler    catch 处理程序 
<br />
category    类别 
<br />
caution    警告 
<br />
cell    单元格 
<br />
cell padding    单元格填充 
<br />
cell span    单元格跨距 
<br />
challenge-response    质询－响应 
<br />
check box    复选框 
<br />
check constraint    CHECK 约束 
<br />
check in    签入 
<br />
check out    签出 
<br />
check state    复选状态 
<br />
check the entry    检查项 
<br />
check the number    检查数目 
<br />
checkout    签出 
<br />
child    子级（注:单独使用）；子（注:构成词组） 
<br />
child code    子代码 
<br />
class    类 
<br />
Class Builder Utility    类生成器实用工具 
<br />
Class Library Reference    类库参考 
<br />
classic    传统（型）；传统风格（的）；经典 
<br />
clean    无变动（注：与 dirty 相对） 
<br />
client area    工作区 
<br />
Client Batch cursor library    客户端批处理游标库 
<br />
client coordinate    客户端请求 
<br />
client-based    基于客户端的 
<br />
client-side    客户端 
<br />
clip    剪裁；剪辑 
<br />
Clipboard format    剪贴板格式 
<br />
Clipboard-viewer chain    剪贴板查看器链 
<br />
clipping region    剪辑区域 
<br />
close parenthesis    右括号 
<br />
Close region    临近区域 
<br />
close up    闭合 
<br />
closing set of angle bracket    结束双尖括号 
<br />
closing tag    结束标记 
<br />
CLS compliant    符合 CLS 
<br />
clustered index    聚集索引 
<br />
code pane    代码窗格 
<br />
codebase    基本代码 
<br />
code-behind    代码隐藏 
<br />
Collapse to Definitions    折叠到定义 
<br />
Collate    逐份打印 
<br />
color scheme    配色方案 
<br />
column span    列跨距 
<br />
COM Classic    COM 传统型 
<br />
combinator    连结符 
<br />
combo box    组合框 
<br />
command handler    命令处理程序 
<br />
Command line builds    命令行编译 
<br />
command routing    命令传送 
<br />
comment token    注释标记 
<br />
compact    压缩；紧凑 
<br />
compact version    精简版本 
<br />
comparer    比较器 
<br />
complex-bound    复杂绑定 
<br />
component    组件 
<br />
component authoring    组件创作 
<br />
Component Services    组件服务 
<br />
component tray    组件栏 
<br />
compose buffer    写缓冲区 
<br />
composition window    撰写窗口 
<br />
concatenation operator    串联运算符 
<br />
concurrency    并发 
<br />
Congratulations    祝贺您 
<br />
connection map    连接映射 
<br />
connection point    连接点 
<br />
considerations    连接字符串 
<br />
constituent control    构成控件 
<br />
constructor    构造函数 
<br />
constructor initializer    构造函数初始值设定项 
<br />
Consumer Template    使用者模板 
<br />
contextify    实现上下文；对…实现上下文 
<br />
contiguous    连续 
<br />
contiguous range    连续范围 
<br />
contract    连续范围 
<br />
Control Containment    控件包容 
<br />
Control Flow    控制流 
<br />
conversion    转换 
<br />
Cookieless    无 Cookie 
<br />
coordinated universal time    协调通用时间 
<br />
Copy    副本；复制 
<br />
corrupt    损坏 
<br />
Cracker    黑客 
<br />
critical section    临界区 
<br />
cross-process    进程间 
<br />
cross-thread    线程间 
<br />
CSS Specific    CSS 特定 
<br />
Cursor    光标；游标 
<br />
Custom Actions Management    自定义操作管理 
<br />
custom marshalling    自定义封送处理 
<br />
cycle through    循环通过 
<br />
Cyclic Redundancy Check    循环冗余校验 （CRC） 
<br />
Dangling Reference    虚引用 
<br />
data compartment    数据舱 
<br />
data consumer    数据使用者 
<br />
data store    数据存储区 
<br />
data-aware    数据识别 
<br />
database diagram    数据库关系图 
<br />
datagram    数据报 
<br />
DDE conversation    DDE 对话 
<br />
deallocate    解除分配；释放 
<br />
decimal separator    小数点分隔符 
<br />
decorated name    修饰名 
<br />
Deep Copy    深层复制 
<br />
default case-insensitive hash code provider    不区分大小写的默认哈希代码提供程序 
<br />
default implementation    默认实现 
<br />
Defect Report    缺陷报告 
<br />
deformatter    反格式化程序 
<br />
degrade    降低 
<br />
degrade gracefully    完全降低 
<br />
delegate    委托 
<br />
delineated square    画有边线的方形 
<br />
denial of service attack    拒绝服务攻击 
<br />
Dep.    部署,deploy的缩写 
<br />
dependency    依赖项 
<br />
dependent file    依赖项目 
<br />
deploy    部署 
<br />
Deployment    部署 
<br />
deprecate    否决 
<br />
derive    派生 
<br />
derived    导出(的)；派生(的) 
<br />
derived class    派生类 
<br />
derived field    导出字段 
<br />
derived type    派生类型 
<br />
deserialize    反序列化 
<br />
Designer Verb    设计器谓词 
<br />
destination    目标 
<br />
destination device    目标设备 
<br />
destination rectangle    目标矩形 
<br />
destroy    损坏 
<br />
destructor    析构函数 
<br />
detect    检测 
<br />
Developer    开发者,开发人员,开发商 
<br />
device    设备 
<br />
device dependent    设备相关 
<br />
Device Image    设备映像 
<br />
Devide key    除号键 
<br />
Diagram    关系图 
<br />
diagram pane    关系图窗格 
<br />
Diagram Surface    关系图面 
<br />
dialog    对话,对话框 
<br />
Diff-Merge    差异－合并 
<br />
digest authentication    宿主；主应用程序；主机；主；承载 
<br />
dimmed appearance    浅灰色 
<br />
directive    指令 
<br />
dispatch    调度 
<br />
dispinterface    调度接口 
<br />
Doc Relative    与文档相关的 
<br />
Dock    停靠 
<br />
dock    停靠 
<br />
dockable    可停靠的 
<br />
dominant    主导 
<br />
downcast    向下转换 
<br />
drop shadow    投影 
<br />
drop target    放置目标 
<br />
dump    转储 
<br />
Elapsed Time    运行时间 
<br />
Embedded    嵌入式的 
<br />
encapsulate    封装 
<br />
enclosing    封闭的 
<br />
encompassing    包含的 
<br />
Enlistment    版本 
<br />
entry    条目,项 
<br />
enumerate    枚举 
<br />
enumerator    枚举数 
<br />
enum-type    枚举类型 
<br />
equivalent    等效 
<br />
Erase    清除 
<br />
escape    转义 
<br />
evaluate    计算 
<br />
evaluator    计算器 
<br />
exception    异常 
<br />
exception throw    引发异常 
<br />
exclusive OR    XOR 
<br />
explicit    显式 
<br />
expose    公开 
<br />
extend    扩展 
<br />
Extensibility    扩展性 
<br />
face    表面 
<br />
factorability    可分解性 
<br />
fast line    快速扫描线 
<br />
favor    优选的 
<br />
feature    功能 
<br />
fetch    获取 
<br />
field    字段 
<br />
figure    图形；图例；数据 
<br />
Filled Rectangle    实心矩形 
<br />
filter    筛选；筛选器 
<br />
finalize    完成 
<br />
fire    激发 
<br />
flow off    超出 
<br />
footer    脚注 
<br />
For details, see    有关详细信息，请参阅 
<br />
foreign    外部的 
<br />
form    形成，构造窗体；表单 
<br />
Forms Authentication    Forms 身份验证 
<br />
four headed arrow    四向箭头 
<br />
fractional-constants    小数常数 
<br />
Free Bytes    可用字节 
<br />
free threaded marshaler    自由线程封送拆收器 
<br />
free-form modeling    自由窗体建模 
<br />
friend    友元 
<br />
Full Control component    完全控制组件 
<br />
Full-Width Alpha-Numeric    全角字母－数字 
<br />
Full-Width Katakana    全角片假名 
<br />
fully populated    完全填充 
<br />
fully qualified name    完全限定名 
<br />
function profiling    函数分析 
<br />
function timing    函数执行时间 
<br />
Further Reading    其他阅读材料 
<br />
gain access    获得访问权限 
<br />
gain control    获得控制 
<br />
Gallery    库 
<br />
Garbage Collector    垃圾回收器 
<br />
general accounting module    常规计帐模块 
<br />
Gets or sets    获取或设置 
<br />
global    全局的 
<br />
Glyph    标志符号 
<br />
Gozer    Gozer；Gozer 处理 
<br />
graphical representation    图形化表示形式 
<br />
grid    网格 
<br />
guarded section    保护区域 
<br />
Guide Settings    参考线设置 
<br />
Half-Width    半角 
<br />
Half-Width Alpha-Numeric    半角字母－数字 
<br />
Handle is not pinned    句柄未被固定 
<br />
handler    处理程序 
<br />
handy    快捷 
<br />
hard-code    硬编码 
<br />
hash    散列 (v.)；哈希 
<br />
hatched pattern    阴影图案 
<br />
header control    标头控件 
<br />
heuristics    试探法 
<br />
hierarchical outline    分层大纲 
<br />
hierarchy    层次结构 
<br />
high-order    高序位 
<br />
horizontal guideline    水平准线 
<br />
host    主机,宿主 
<br />
Hotfix    修补程序 
<br />
hover    悬停 
<br />
hub and spoke model    轮辐式模型 
<br />
human-readable    可读的 
<br />
identity operator    恒等运算符 
<br />
illegal    非法 
<br />
illustrate    阐释 
<br />
IME    输入法编辑器(Input Method Editor) 
<br />
impersonation    模拟 
<br />
implementer    实施者 
<br />
implicit    隐式 
<br />
import    导入,输入 
<br />
in spec    规格中 
<br />
In this Section    本节内容 
<br />
incoming    传入（的） 
<br />
Independent    独立 
<br />
indexer    索引器 
<br />
Indicator Margin Click    单击指示器边距 
<br />
inference    推理 
<br />
infix notation    中缀符 
<br />
initial capacity    初始容量 
<br />
injected code    插入的代码 
<br />
injection attack    注入式攻击 
<br />
Inline    内联 
<br />
in-place    就地 
<br />
input mask    输入掩码 
<br />
Input Method Editor    输入法编辑器 
<br />
Install on Demand    即需即装 
<br />
instantiate    实例化 
<br />
Instantiate Live Controls    实例化活控件 
<br />
intaller    安装程序 
<br />
integrated    集成的 
<br />
Intellisense    智能感知 
<br />
interact    交互 
<br />
interface    接口；界面 
<br />
internal    内部的 
<br />
interoperate    互用；交互操作 
<br />
interrupt    中断 
<br />
intrinsic    内部的 
<br />
Invalid literal exponent    无效指数 
<br />
invocation    调用 
<br />
invocation list    调用列表 
<br />
Is Dirty    已更新 
<br />
isolated storage    独立存储 
<br />
issue    发出 
<br />
item    条目;项 
<br />
iterate through    循环访问 
<br />
iteration    迭代 
<br />
jagged    交错的 
<br />
join    联接 
<br />
journal    日志,日记 
<br />
jump    跳转 
<br />
junction table    联接表 
<br />
Just-in-time    实时 
<br />
key    关键字；键；项（注:与注册表有关时） 
<br />
key as string    键为字符串 
<br />
key feature    主要功能 
<br />
key file    密钥文件 
<br />
keyset-driven    键集驱动 
<br />
keyset-type    键集类型 
<br />
kill    注销；取消 
<br />
Knowledge Base    知识库 
<br />
labeled statement    标记语句 
<br />
LAME!    报告错误！ 
<br />
language equivalents    等效语言 
<br />
lead byte    前导字节 
<br />
least significant byte    最低有效字节 
<br />
ledger    帐目型 
<br />
left outer join    左外部联接 
<br />
less derived    派生程度较小的 
<br />
leverage    （综合）利用；平衡 
<br />
lexical scope    词法范围 
<br />
lifetime    生存期 
<br />
line break    分行符 
<br />
list box    列表框 
<br />
listener    侦听器,侦听者 
<br />
Lite control    Lite 控件 
<br />
literal    literal；文本 
<br />
literal character    原义字符 
<br />
load factor    加载因子 
<br />
local    局部的;本地的 
<br />
local machine    本地计算机 
<br />
local storage    本地存储区 
<br />
Locale    区域设置 
<br />
locale    区域设置 
<br />
locator    定位器 
<br />
look up    查阅,查找 
<br />
lookahead    预测先行 
<br />
loop through    依次通过 
<br />
loosely coupled    松耦合 
<br />
low-order    低序位 
<br />
Macros Dialog    宏对话 
<br />
mainframe    主框架；大型机 
<br />
managed    托管的 
<br />
manifest    清单 
<br />
many-to-many    多对多 
<br />
map    地图,映射 
<br />
mapping mode    映射模式 
<br />
margin    边距； 空白 
<br />
margin indicator    边距指示符 
<br />
marquee    字幕 
<br />
marshal    封送 
<br />
marshal-by-reference    引用封送 
<br />
marshaler    封送拆收器 
<br />
mask    屏蔽;掩码 
<br />
Match Case    大小写匹配 
<br />
message pump    消息泵 
<br />
middle-tier    中间层 
<br />
migrate    迁移 
<br />
Misc    杂项 
<br />
Miscellaneous    杂项 
<br />
moniker    名字对象 
<br />
more derived    派生程度较大的 
<br />
More Information    详细信息 
<br />
more recent    较新的 
<br />
multibyte    多字节 
<br />
multicast    多路广播 
<br />
Multiple-Inheritance    多重继承 
<br />
Multiply key    乘号键 
<br />
mutually exclusive    互相排斥 
<br />
naked attribute    naked 属性 
<br />
Naked Function Calls    裸函数调用 
<br />
named    命名的 
<br />
namespace    命名空间 
<br />
nanosecond    毫微秒 
<br />
narrowing conversion    收缩转换 
<br />
native    本机 
<br />
navigator    导航器 
<br />
New any    新建项 
<br />
New anyAttribute    新建属性 
<br />
New Technology file system    NTFS 文件系统 
<br />
newline    换行;换行符 
<br />
No conversions are performed    未进行转换 
<br />
nonaggregated    非聚集 
<br />
non-scatter    非散点程序集 
<br />
notation    表示法 
<br />
nudge    微移 
<br />
Numbered List    编号列表 
<br />
Obfuscation    模糊处理 
<br />
object-oriented programming    面向对象的编程 
<br />
occurrence    匹配项；（视上下文也可省略不译） 
<br />
On button down    当按钮按下 
<br />
one-based    从一开始的 
<br />
One-Click Web Hosting    鼠标一点，轻松发布到 Web 
<br />
one-liner    单行方式 
<br />
one-to-many    一对多 
<br />
one-to-one    一对一 
<br />
open    打开;开始;开放;左侧的(对于括号等成对的标记) 
<br />
Open Database Connectivity    开放式数据库连接 
<br />
open parenthesis    左括号 
<br />
Open With    打开方式 
<br />
opening brace    左大括号 
<br />
opening tag    开始标记 
<br />
operator    运算符；操作符 
<br />
optimistic concurrency    开放式并发 
<br />
ordinal    序号 
<br />
Out of Memory    内存不足 
<br />
Out Parameter    输出接口 
<br />
outgoing interface    输出接口 
<br />
Outlined Rectangle    空心矩形 
<br />
out-of-band data    带外数据 
<br />
out-of-process    进程外 
<br />
Overall Steps    全部步骤 
<br />
overhead    系统开销 
<br />
overlap    重叠 
<br />
overload    重载 
<br />
Overload Induction    重载归纳 
<br />
overload resolution    重载决策 
<br />
overridable public function    可重写的公共函数 
<br />
override    重写 
<br />
Overview    概述 
<br />
overwrite    改写 
<br />
owned window    附属窗口 
<br />
owner-drawn    所有者描述的 
<br />
ownership    所属权 
<br />
pack pragma    压缩杂注 
<br />
package    打包 
<br />
Package Body    包正文 
<br />
padding    空白,边距(n.)；填充 
<br />
pager button    页导航按钮 
<br />
pane    窗格 
<br />
pass over    经过 
<br />
pass-through    传递 
<br />
peek    查看 
<br />
peer    对方；对等；对方主机；同级 
<br />
pending    挂起 
<br />
per-column    按列的；基于列的；针对于列的 
<br />
permission    权限 
<br />
persistence    持久性；持久性存储 
<br />
persister    持续程序 
<br />
Pessimistic locking    保守式锁定 
<br />
pie section    扇形区 
<br />
pipe    管道 
<br />
plate    盘片 
<br />
pointer    点,指针 
<br />
pointer-to-member    指向成员的指针(n.) 
<br />
policy class    策略类 
<br />
polymorphism    多态性 
<br />
populate    填充 
<br />
positioning    定位 
<br />
postback    回发 
<br />
post-processor    处理器后 
<br />
potential mod by 0    潜在的以 0 求模 
<br />
pragma    杂注 
<br />
precedence    优先级 
<br />
precompile    预编译 
<br />
predefined    预定义的 
<br />
preferences    首选项 
<br />
preprocessor directive    预处理器指令 
<br />
Presentation Tier    表示层 
<br />
primitive    基元 
<br />
principal    用户；主体 
<br />
process    进程 
<br />
profile    详细资料 
<br />
profiler    分析器 
<br />
profiling error    分析错误 
<br />
Program    编程 
<br />
programmatic access    编程访问 
<br />
progress    进度 
<br />
properly    正确地，适当地 
<br />
property    属性 
<br />
property attributes    属性特性 
<br />
provider    提供程序 
<br />
pseudo-marshalling    伪封送 
<br />
publisher    出版商 
<br />
push button    下压按钮 
<br />
put area    放置区域 
<br />
put pointer    放置指针 
<br />
put up modal UI    提供模式用户界面 
<br />
qualified name    限定名 
<br />
qualifier    限定符 
<br />
QuickStart    快速入门 
<br />
radio check mark    选中标记 
<br />
raise    引发 
<br />
Rapid Application Development    应用程序快速开发 
<br />
reader    读取器；阅读器 
<br />
realign    重新对齐 
<br />
rebar band    rebar 带区 
<br />
rebar control    rebar 控件 
<br />
Recordset    记录集 
<br />
recurrence pattern    定期模式 
<br />
recycle    回收 
<br />
Redistributable    可再发行的 
<br />
reference    引用 
<br />
registrar    注册器 
<br />
regular expression    正则表达式 
<br />
related    相关的 
<br />
related words    相关字 
<br />
render    呈现 
<br />
repeater    重复器 
<br />
repository    储存库；库 
<br />
reserve area    保留区域 
<br />
reset    重置 
<br />
reside    驻留 
<br />
resident    驻留 
<br />
resolve    解析 
<br />
resolver    冲突解决程序 
<br />
restore    还原 
<br />
Retail configuration    “发布”配置 
<br />
rethrow    再次引发 
<br />
retrieve    检索 
<br />
revoke    撤消 
<br />
rework    改编；返工 
<br />
rich text    多格式文本 
<br />
right outer join    右外部联接 
<br />
root cause    根源 
<br />
Root Relative    与根相关的 
<br />
rootkey    根项 
<br />
round trip    往返行程 
<br />
routine    例程 
<br />
row-major    行优先 
<br />
Run Length Encoded    行程编码 
<br />
run-time library    运行时库 
<br />
salted hash    Salted 哈希技术 
<br />
satellite    附属 
<br />
scatter assembly    散点程序集 
<br />
schedule    安排 (v.) 
<br />
schema    架构 
<br />
scope resolution    范围解析 
<br />
Scripting Host    脚本宿主 
<br />
Scriptlet    脚本小程序 
<br />
Section    区域;章节 
<br />
See also    请参见 
<br />
self-contained    独立的 
<br />
self-join    自联接 
<br />
self-referenced    自引用的 
<br />
semi-trusted    不完全受信任的 
<br />
Send Behind    下移一层 
<br />
serialize    序列化 
<br />
shadow    影像;镜像 
<br />
shallow copy    浅表副本；浅表复制（copy 作动词时） 
<br />
shared checkout    以共享方式签出 
<br />
shift the focus    变换焦点 
<br />
short circuit operator    短路运算符 
<br />
short delay    短暂停留 
<br />
shortcut key combinations    快捷组合键 
<br />
sibling    同辈 
<br />
signaled state    终止状态 
<br />
significand    有效数 
<br />
single tab stop    单个 Tab 停靠 
<br />
single-dimensional    一维 
<br />
single-document interface    单文档界面 (SDI) 
<br />
Single-Inheritance    单一继承 
<br />
sink    详细资料;分析 
<br />
size grip    大小手柄 
<br />
SizeAll    四向箭头 
<br />
sizing grip    大小调整手柄 
<br />
skeleton    主干 
<br />
slash    斜杠 
<br />
slider control    滑块控件 
<br />
smart pointer    聪明指针 
<br />
Snap-In    管理单元 
<br />
snap-in    管理单元 
<br />
snapshot    快照 
<br />
specific to    特定于；针对 
<br />
specifier    说明符 
<br />
spin button control    数值调节钮控件 
<br />
spin control    数值调节钮控件 
<br />
Split Vertical In    左右向中央缩进 
<br />
splitter    拆分器 
<br />
splitter window    拆分窗口 
<br />
spreadsheet    电子表格 
<br />
stack frame    堆栈帧 
<br />
stack walk    堆栈审核 
<br />
standalone    独立 
<br />
stand-alone    独立 
<br />
starter application    起始应用程序 
<br />
state bag    状态袋 
<br />
statement    语句 
<br />
stencil    模具 
<br />
step a frame    通过一帧 
<br />
Step By    调试方式 
<br />
Step Into    逐语句；进入并单步执行；单步执行 
<br />
Step Out    跳出 
<br />
Step Over    逐过程 
<br />
step through    逐句通过 
<br />
step unit    单步执行单元 
<br />
step-by-step    逐步骤 
<br />
step-by-step details    详细步骤信息 
<br />
step-by-step topics    分步指导的主题 
<br />
stock    常用 
<br />
straight quotation marks    直引号 
<br />
streamer    流转化器 
<br />
stress test    压力测试 
<br />
string literal    字符串 
<br />
stroke list    笔画列表 
<br />
stub    存根 
<br />
subkey    子项 
<br />
subscriber    订户 
<br />
subsequent    后面的 
<br />
Substract key    减号键 
<br />
superimposed    叠加的 
<br />
Surpress banner    取消显示版权标志 
<br />
surrogate    web场 
<br />
symbol store    符号存储区 
<br />
symmetric key    对称密钥 
<br />
tab    选项卡 
<br />
Tab Order    Tab 键顺序 
<br />
Tabbed    选项卡式的 
<br />
tear-off    分开的 
<br />
Technical Assistance    技术支持 
<br />
technical note    技术说明 
<br />
Technote    技术说明 
<br />
Templated    模板化的 
<br />
terminating line number emission    显示终止行号 
<br />
This feature will remain uninstalled    将不安装此功能 
<br />
thread    线程 
<br />
threading    线程处理 
<br />
threading model    线程模型 
<br />
threshold    阈值 
<br />
tick    刻度 
<br />
tick mark    刻度线 
<br />
tier    层 
<br />
tightly coupled    紧耦合 
<br />
to be supplied    待提供 
<br />
to be written    待补 
<br />
To Fit    合适大小 
<br />
token    标记 
<br />
Top margin    上边距 
<br />
top-level    顶级 
<br />
trace into    跟踪到 
<br />
trackbar    跟踪条 
<br />
trail byte    尾字节 
<br />
transient    瞬态 
<br />
trap    捕获 
<br />
trappable    可捕获的 
<br />
trigger    触发；触发器 
<br />
truncate    截断 
<br />
type specifier    类型说明符 
<br />
typed    类型化的 
<br />
typelib    类型库 
<br />
typographic    版式 
<br />
UI    用户界面 
<br />
unattended execution    无人参与执行 
<br />
unbox    取消装箱 
<br />
underlying    基础 
<br />
unescaped    非转义的 
<br />
unit    单位,单元 
<br />
Universal Coordinated Time    协调通用时间 
<br />
unmanaged    非托管的 
<br />
unmarshal    取消封送 (v.) 
<br />
unsized    未确定大小的 
<br />
upper bound    上限 
<br />
upstream    上游 
<br />
usage data    惯用数据 
<br />
user interaction    用户交互 
<br />
user-drawn    用户描述的 
<br />
utility    实用工具 
<br />
validator    验证程序 
<br />
versionable    无版本冲突的 
<br />
View    浏览,视图 
<br />
virtual    虚拟 
<br />
Walkthrough    演练 
<br />
web farm    web场,web园 
<br />
web garden    web园 
<br />
Web-crawling    Web 爬行遍历 
<br />
wedge button    三角形按钮 
<br />
well-behaved    功能良好的 
<br />
well-defined    定义完善的 
<br />
Whitespace    空白 
<br />
wide-character    宽字符 
<br />
widening    扩大 
<br />
worker thread    辅助线程 
<br />
Workspace    工作区 
<br />
wrapper    包装 
<br />
zero-based    从零开始的 
<br />
zomby    僵停<br /><hr />
This weblog is sponsored by <a href="http://www.qihangnet.com">Qihangnet</a>. 
</body>
      <title>.NET专业词汇[英中]对照表</title>
      <guid isPermaLink="false">http://www.qihangnet.com/PermaLink,guid,f1215e0c-491a-457a-8f5b-387b97ee16ed.aspx</guid>
      <link>http://www.qihangnet.com/PermaLink,guid,f1215e0c-491a-457a-8f5b-387b97ee16ed.aspx</link>
      <pubDate>Wed, 23 Mar 2005 08:47:37 GMT</pubDate>
      <description>abstract class&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;抽象类 &lt;br&gt;
accelerator&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;快捷键 
&lt;br&gt;
accelerator mapping&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;快捷键映射 
&lt;br&gt;
accelerator table&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;快捷键对应表 
&lt;br&gt;
access modifier&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;访问修饰符 
&lt;br&gt;
Access Pack&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;访问包 
&lt;br&gt;
access specifier&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;访问说明符 
&lt;br&gt;
access violation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;访问冲突 
&lt;br&gt;
accessibility&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;辅助功能 
&lt;br&gt;
accessibility domain&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;可访问域 
&lt;br&gt;
Accessibility Options&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;辅助功能选项 
&lt;br&gt;
accessor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;访问器 
&lt;br&gt;
action&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;操作 
&lt;br&gt;
Active Directory hierarchy&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Active Directory 层次结构 
&lt;br&gt;
active document&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;活动文档 
&lt;br&gt;
Active Document Containment&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;活动文档包容 
&lt;br&gt;
active end&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;活动结尾 
&lt;br&gt;
active object&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;活动对象 
&lt;br&gt;
active point&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;活动点 
&lt;br&gt;
Active Template Library&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;活动模板库 
&lt;br&gt;
ActiveX Component&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ActiveX 组件 
&lt;br&gt;
ActiveX control container&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ActiveX 控件容器 
&lt;br&gt;
ActiveX Control Interface Wizard&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ActiveX 控件接口向导 
&lt;br&gt;
ActiveX-enabled&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;支持 ActiveX 的 
&lt;br&gt;
adaptor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;适配器 
&lt;br&gt;
Add key&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;加号键 
&lt;br&gt;
Add-In&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;外接程序 
&lt;br&gt;
Address Book&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;通讯簿 
&lt;br&gt;
address space&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;地址空间 
&lt;br&gt;
advise sink&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;通知接收 
&lt;br&gt;
aggregate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;聚合 
&lt;br&gt;
Airbrush&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;喷枪 
&lt;br&gt;
algorithm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;算法 
&lt;br&gt;
allocation hook&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;分配挂钩 
&lt;br&gt;
allocator&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;分配器 
&lt;br&gt;
Alternate text&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;替换文字,备用文本 
&lt;br&gt;
animation control&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;动画控件 
&lt;br&gt;
apartment-model threading&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;单元模型线程 
&lt;br&gt;
Apply Now&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;立即应用 
&lt;br&gt;
&lt;a name=more&gt;&lt;/a&gt;
&lt;br&gt;
apply to similar&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;应用到相似项 
&lt;br&gt;
argument&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;参数 
&lt;br&gt;
array initializer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;数组初始值设定项 
&lt;br&gt;
array rank&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;数组秩 
&lt;br&gt;
arrow cap&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;箭头帽 
&lt;br&gt;
ArrowHourGlass&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;箭头沙漏 
&lt;br&gt;
ArrowQuestion&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;箭头问号 
&lt;br&gt;
article family&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;文章族 
&lt;br&gt;
assembly&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;程序集；汇编 
&lt;br&gt;
assembly manifest&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;程序集清单 
&lt;br&gt;
assert&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;断言 
&lt;br&gt;
associate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;关联 
&lt;br&gt;
asynchronous moniker&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;异步名字对象 
&lt;br&gt;
asynchronous peek operation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;异步查看操作 
&lt;br&gt;
atomic operation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;原子操作 
&lt;br&gt;
attached table&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;附加表 
&lt;br&gt;
Attributed Component Wizard&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;属性化组件向导 
&lt;br&gt;
Attributed Programming&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;属性化编程 
&lt;br&gt;
Attributes Property&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Attributes 属性 
&lt;br&gt;
Authentication&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;身份验证 
&lt;br&gt;
authorable&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;可创作（的） 
&lt;br&gt;
Auto completion for commands&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;自动完成命令 
&lt;br&gt;
Auto Increment&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;自动增加 
&lt;br&gt;
Auto Syntax Check&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;自动语法校验 
&lt;br&gt;
automation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;自动化 
&lt;br&gt;
automation-enabled&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;启用自动化 
&lt;br&gt;
base implementation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;基实现 
&lt;br&gt;
be paged to disk&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;分页到磁盘 
&lt;br&gt;
binary operator&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;二元运算符 
&lt;br&gt;
bind&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;绑定 
&lt;br&gt;
binder&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;联编程序 
&lt;br&gt;
binding constraints&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;绑定约束 
&lt;br&gt;
bit field&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;位域 
&lt;br&gt;
bitmask&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;位屏蔽 
&lt;br&gt;
bitwise&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;按位 
&lt;br&gt;
bitwise complement operator&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;按位求补运算符 
&lt;br&gt;
bit-wise equivalent&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;位等效数 
&lt;br&gt;
bitwise OR operator&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;位 OR 运算符 
&lt;br&gt;
block&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;块 
&lt;br&gt;
block if&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If 块 
&lt;br&gt;
blocking UI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;模块化用户界面 
&lt;br&gt;
Book Edition&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;试用版 
&lt;br&gt;
bootstrapper&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;引导程序 
&lt;br&gt;
bottom margin&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;下边距 
&lt;br&gt;
bound&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;界限；绑定 
&lt;br&gt;
bound control&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;绑定控件 
&lt;br&gt;
bounding rectangle&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;边框 
&lt;br&gt;
box&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;装箱 (v.) 
&lt;br&gt;
break&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;分页；分行；中断 (v.)；断点 (n.) 
&lt;br&gt;
break compatibility&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;破坏兼容性 
&lt;br&gt;
break execution&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;中断执行 
&lt;br&gt;
breakpoint&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;断点 
&lt;br&gt;
Bring Forward&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;上移一层 
&lt;br&gt;
Bring In Front&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;上移一层 
&lt;br&gt;
Bring to Front&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;置于顶层 
&lt;br&gt;
broker&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;中间装置 
&lt;br&gt;
Browse With&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;浏览方式 
&lt;br&gt;
bubbling&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;冒泡 
&lt;br&gt;
bucket&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;存储桶 
&lt;br&gt;
buddy&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;合作者 
&lt;br&gt;
buffer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;缓冲区 
&lt;br&gt;
build&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;生成 (v.)；版本 (n.);编译 
&lt;br&gt;
Builder&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;生成器 
&lt;br&gt;
building block&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;构造块 
&lt;br&gt;
built-in&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;内置 
&lt;br&gt;
bulk row fetching&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;批量取行 
&lt;br&gt;
Bulleted List&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;项目符号列表 
&lt;br&gt;
business logic&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;业务逻辑 
&lt;br&gt;
business process&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;业务处理 
&lt;br&gt;
business rule&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;业务规则 
&lt;br&gt;
cache&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;缓存 
&lt;br&gt;
cacheability&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;可缓存性 
&lt;br&gt;
call&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;调用 
&lt;br&gt;
call back&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;回调 
&lt;br&gt;
call invoke&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;调用 invoke（调用） 
&lt;br&gt;
called procedure&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;被调用过程 
&lt;br&gt;
caller&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;调用方 
&lt;br&gt;
calling code&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;呼叫代码 
&lt;br&gt;
calling convention&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;调用约定 
&lt;br&gt;
calling process&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;调用进程 
&lt;br&gt;
call-out interception&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;调出侦听 
&lt;br&gt;
caption&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;标题 
&lt;br&gt;
caret&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;插入符号 
&lt;br&gt;
carriage return-linefeed&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;回车-换行 
&lt;br&gt;
cascade&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;层叠,级联 
&lt;br&gt;
case statement&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case 语句 
&lt;br&gt;
case-sensitive&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;区分大小写 
&lt;br&gt;
cast&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;强制转换 
&lt;br&gt;
catalog&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;目录 
&lt;br&gt;
catch block&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;catch 块 
&lt;br&gt;
catch handler&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;catch 处理程序 
&lt;br&gt;
category&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;类别 
&lt;br&gt;
caution&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;警告 
&lt;br&gt;
cell&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;单元格 
&lt;br&gt;
cell padding&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;单元格填充 
&lt;br&gt;
cell span&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;单元格跨距 
&lt;br&gt;
challenge-response&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;质询－响应 
&lt;br&gt;
check box&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;复选框 
&lt;br&gt;
check constraint&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CHECK 约束 
&lt;br&gt;
check in&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;签入 
&lt;br&gt;
check out&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;签出 
&lt;br&gt;
check state&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;复选状态 
&lt;br&gt;
check the entry&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;检查项 
&lt;br&gt;
check the number&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;检查数目 
&lt;br&gt;
checkout&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;签出 
&lt;br&gt;
child&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;子级（注:单独使用）；子（注:构成词组） 
&lt;br&gt;
child code&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;子代码 
&lt;br&gt;
class&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;类 
&lt;br&gt;
Class Builder Utility&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;类生成器实用工具 
&lt;br&gt;
Class Library Reference&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;类库参考 
&lt;br&gt;
classic&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;传统（型）；传统风格（的）；经典 
&lt;br&gt;
clean&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;无变动（注：与 dirty 相对） 
&lt;br&gt;
client area&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;工作区 
&lt;br&gt;
Client Batch cursor library&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;客户端批处理游标库 
&lt;br&gt;
client coordinate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;客户端请求 
&lt;br&gt;
client-based&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;基于客户端的 
&lt;br&gt;
client-side&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;客户端 
&lt;br&gt;
clip&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;剪裁；剪辑 
&lt;br&gt;
Clipboard format&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;剪贴板格式 
&lt;br&gt;
Clipboard-viewer chain&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;剪贴板查看器链 
&lt;br&gt;
clipping region&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;剪辑区域 
&lt;br&gt;
close parenthesis&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;右括号 
&lt;br&gt;
Close region&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;临近区域 
&lt;br&gt;
close up&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;闭合 
&lt;br&gt;
closing set of angle bracket&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;结束双尖括号 
&lt;br&gt;
closing tag&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;结束标记 
&lt;br&gt;
CLS compliant&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;符合 CLS 
&lt;br&gt;
clustered index&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;聚集索引 
&lt;br&gt;
code pane&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;代码窗格 
&lt;br&gt;
codebase&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;基本代码 
&lt;br&gt;
code-behind&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;代码隐藏 
&lt;br&gt;
Collapse to Definitions&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;折叠到定义 
&lt;br&gt;
Collate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;逐份打印 
&lt;br&gt;
color scheme&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;配色方案 
&lt;br&gt;
column span&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;列跨距 
&lt;br&gt;
COM Classic&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;COM 传统型 
&lt;br&gt;
combinator&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;连结符 
&lt;br&gt;
combo box&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;组合框 
&lt;br&gt;
command handler&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;命令处理程序 
&lt;br&gt;
Command line builds&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;命令行编译 
&lt;br&gt;
command routing&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;命令传送 
&lt;br&gt;
comment token&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;注释标记 
&lt;br&gt;
compact&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;压缩；紧凑 
&lt;br&gt;
compact version&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;精简版本 
&lt;br&gt;
comparer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;比较器 
&lt;br&gt;
complex-bound&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;复杂绑定 
&lt;br&gt;
component&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;组件 
&lt;br&gt;
component authoring&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;组件创作 
&lt;br&gt;
Component Services&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;组件服务 
&lt;br&gt;
component tray&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;组件栏 
&lt;br&gt;
compose buffer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;写缓冲区 
&lt;br&gt;
composition window&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;撰写窗口 
&lt;br&gt;
concatenation operator&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;串联运算符 
&lt;br&gt;
concurrency&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;并发 
&lt;br&gt;
Congratulations&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;祝贺您 
&lt;br&gt;
connection map&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;连接映射 
&lt;br&gt;
connection point&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;连接点 
&lt;br&gt;
considerations&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;连接字符串 
&lt;br&gt;
constituent control&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;构成控件 
&lt;br&gt;
constructor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;构造函数 
&lt;br&gt;
constructor initializer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;构造函数初始值设定项 
&lt;br&gt;
Consumer Template&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;使用者模板 
&lt;br&gt;
contextify&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;实现上下文；对…实现上下文 
&lt;br&gt;
contiguous&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;连续 
&lt;br&gt;
contiguous range&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;连续范围 
&lt;br&gt;
contract&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;连续范围 
&lt;br&gt;
Control Containment&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;控件包容 
&lt;br&gt;
Control Flow&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;控制流 
&lt;br&gt;
conversion&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;转换 
&lt;br&gt;
Cookieless&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;无 Cookie 
&lt;br&gt;
coordinated universal time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;协调通用时间 
&lt;br&gt;
Copy&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;副本；复制 
&lt;br&gt;
corrupt&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;损坏 
&lt;br&gt;
Cracker&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;黑客 
&lt;br&gt;
critical section&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;临界区 
&lt;br&gt;
cross-process&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;进程间 
&lt;br&gt;
cross-thread&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;线程间 
&lt;br&gt;
CSS Specific&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CSS 特定 
&lt;br&gt;
Cursor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;光标；游标 
&lt;br&gt;
Custom Actions Management&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;自定义操作管理 
&lt;br&gt;
custom marshalling&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;自定义封送处理 
&lt;br&gt;
cycle through&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;循环通过 
&lt;br&gt;
Cyclic Redundancy Check&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;循环冗余校验 （CRC） 
&lt;br&gt;
Dangling Reference&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;虚引用 
&lt;br&gt;
data compartment&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;数据舱 
&lt;br&gt;
data consumer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;数据使用者 
&lt;br&gt;
data store&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;数据存储区 
&lt;br&gt;
data-aware&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;数据识别 
&lt;br&gt;
database diagram&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;数据库关系图 
&lt;br&gt;
datagram&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;数据报 
&lt;br&gt;
DDE conversation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DDE 对话 
&lt;br&gt;
deallocate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;解除分配；释放 
&lt;br&gt;
decimal separator&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;小数点分隔符 
&lt;br&gt;
decorated name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;修饰名 
&lt;br&gt;
Deep Copy&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;深层复制 
&lt;br&gt;
default case-insensitive hash code provider&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;不区分大小写的默认哈希代码提供程序 
&lt;br&gt;
default implementation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;默认实现 
&lt;br&gt;
Defect Report&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;缺陷报告 
&lt;br&gt;
deformatter&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;反格式化程序 
&lt;br&gt;
degrade&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;降低 
&lt;br&gt;
degrade gracefully&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;完全降低 
&lt;br&gt;
delegate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;委托 
&lt;br&gt;
delineated square&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;画有边线的方形 
&lt;br&gt;
denial of service attack&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;拒绝服务攻击 
&lt;br&gt;
Dep.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;部署,deploy的缩写 
&lt;br&gt;
dependency&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;依赖项 
&lt;br&gt;
dependent file&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;依赖项目 
&lt;br&gt;
deploy&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;部署 
&lt;br&gt;
Deployment&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;部署 
&lt;br&gt;
deprecate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;否决 
&lt;br&gt;
derive&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;派生 
&lt;br&gt;
derived&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;导出(的)；派生(的) 
&lt;br&gt;
derived class&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;派生类 
&lt;br&gt;
derived field&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;导出字段 
&lt;br&gt;
derived type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;派生类型 
&lt;br&gt;
deserialize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;反序列化 
&lt;br&gt;
Designer Verb&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;设计器谓词 
&lt;br&gt;
destination&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;目标 
&lt;br&gt;
destination device&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;目标设备 
&lt;br&gt;
destination rectangle&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;目标矩形 
&lt;br&gt;
destroy&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;损坏 
&lt;br&gt;
destructor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;析构函数 
&lt;br&gt;
detect&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;检测 
&lt;br&gt;
Developer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;开发者,开发人员,开发商 
&lt;br&gt;
device&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;设备 
&lt;br&gt;
device dependent&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;设备相关 
&lt;br&gt;
Device Image&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;设备映像 
&lt;br&gt;
Devide key&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;除号键 
&lt;br&gt;
Diagram&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;关系图 
&lt;br&gt;
diagram pane&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;关系图窗格 
&lt;br&gt;
Diagram Surface&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;关系图面 
&lt;br&gt;
dialog&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;对话,对话框 
&lt;br&gt;
Diff-Merge&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;差异－合并 
&lt;br&gt;
digest authentication&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;宿主；主应用程序；主机；主；承载 
&lt;br&gt;
dimmed appearance&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;浅灰色 
&lt;br&gt;
directive&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;指令 
&lt;br&gt;
dispatch&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;调度 
&lt;br&gt;
dispinterface&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;调度接口 
&lt;br&gt;
Doc Relative&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;与文档相关的 
&lt;br&gt;
Dock&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;停靠 
&lt;br&gt;
dock&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;停靠 
&lt;br&gt;
dockable&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;可停靠的 
&lt;br&gt;
dominant&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;主导 
&lt;br&gt;
downcast&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;向下转换 
&lt;br&gt;
drop shadow&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;投影 
&lt;br&gt;
drop target&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;放置目标 
&lt;br&gt;
dump&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;转储 
&lt;br&gt;
Elapsed Time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;运行时间 
&lt;br&gt;
Embedded&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;嵌入式的 
&lt;br&gt;
encapsulate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;封装 
&lt;br&gt;
enclosing&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;封闭的 
&lt;br&gt;
encompassing&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;包含的 
&lt;br&gt;
Enlistment&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;版本 
&lt;br&gt;
entry&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;条目,项 
&lt;br&gt;
enumerate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;枚举 
&lt;br&gt;
enumerator&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;枚举数 
&lt;br&gt;
enum-type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;枚举类型 
&lt;br&gt;
equivalent&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;等效 
&lt;br&gt;
Erase&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;清除 
&lt;br&gt;
escape&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;转义 
&lt;br&gt;
evaluate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;计算 
&lt;br&gt;
evaluator&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;计算器 
&lt;br&gt;
exception&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;异常 
&lt;br&gt;
exception throw&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;引发异常 
&lt;br&gt;
exclusive OR&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;XOR 
&lt;br&gt;
explicit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;显式 
&lt;br&gt;
expose&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;公开 
&lt;br&gt;
extend&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;扩展 
&lt;br&gt;
Extensibility&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;扩展性 
&lt;br&gt;
face&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;表面 
&lt;br&gt;
factorability&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;可分解性 
&lt;br&gt;
fast line&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;快速扫描线 
&lt;br&gt;
favor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;优选的 
&lt;br&gt;
feature&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;功能 
&lt;br&gt;
fetch&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;获取 
&lt;br&gt;
field&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;字段 
&lt;br&gt;
figure&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;图形；图例；数据 
&lt;br&gt;
Filled Rectangle&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;实心矩形 
&lt;br&gt;
filter&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;筛选；筛选器 
&lt;br&gt;
finalize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;完成 
&lt;br&gt;
fire&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;激发 
&lt;br&gt;
flow off&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;超出 
&lt;br&gt;
footer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;脚注 
&lt;br&gt;
For details, see&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;有关详细信息，请参阅 
&lt;br&gt;
foreign&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;外部的 
&lt;br&gt;
form&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;形成，构造窗体；表单 
&lt;br&gt;
Forms Authentication&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Forms 身份验证 
&lt;br&gt;
four headed arrow&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;四向箭头 
&lt;br&gt;
fractional-constants&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;小数常数 
&lt;br&gt;
Free Bytes&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;可用字节 
&lt;br&gt;
free threaded marshaler&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;自由线程封送拆收器 
&lt;br&gt;
free-form modeling&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;自由窗体建模 
&lt;br&gt;
friend&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;友元 
&lt;br&gt;
Full Control component&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;完全控制组件 
&lt;br&gt;
Full-Width Alpha-Numeric&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;全角字母－数字 
&lt;br&gt;
Full-Width Katakana&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;全角片假名 
&lt;br&gt;
fully populated&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;完全填充 
&lt;br&gt;
fully qualified name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;完全限定名 
&lt;br&gt;
function profiling&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;函数分析 
&lt;br&gt;
function timing&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;函数执行时间 
&lt;br&gt;
Further Reading&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;其他阅读材料 
&lt;br&gt;
gain access&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;获得访问权限 
&lt;br&gt;
gain control&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;获得控制 
&lt;br&gt;
Gallery&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;库 
&lt;br&gt;
Garbage Collector&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;垃圾回收器 
&lt;br&gt;
general accounting module&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;常规计帐模块 
&lt;br&gt;
Gets or sets&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;获取或设置 
&lt;br&gt;
global&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;全局的 
&lt;br&gt;
Glyph&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;标志符号 
&lt;br&gt;
Gozer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Gozer；Gozer 处理 
&lt;br&gt;
graphical representation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;图形化表示形式 
&lt;br&gt;
grid&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;网格 
&lt;br&gt;
guarded section&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;保护区域 
&lt;br&gt;
Guide Settings&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;参考线设置 
&lt;br&gt;
Half-Width&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;半角 
&lt;br&gt;
Half-Width Alpha-Numeric&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;半角字母－数字 
&lt;br&gt;
Handle is not pinned&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;句柄未被固定 
&lt;br&gt;
handler&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;处理程序 
&lt;br&gt;
handy&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;快捷 
&lt;br&gt;
hard-code&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;硬编码 
&lt;br&gt;
hash&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;散列 (v.)；哈希 
&lt;br&gt;
hatched pattern&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;阴影图案 
&lt;br&gt;
header control&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;标头控件 
&lt;br&gt;
heuristics&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;试探法 
&lt;br&gt;
hierarchical outline&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;分层大纲 
&lt;br&gt;
hierarchy&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;层次结构 
&lt;br&gt;
high-order&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;高序位 
&lt;br&gt;
horizontal guideline&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;水平准线 
&lt;br&gt;
host&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;主机,宿主 
&lt;br&gt;
Hotfix&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;修补程序 
&lt;br&gt;
hover&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;悬停 
&lt;br&gt;
hub and spoke model&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;轮辐式模型 
&lt;br&gt;
human-readable&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;可读的 
&lt;br&gt;
identity operator&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;恒等运算符 
&lt;br&gt;
illegal&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;非法 
&lt;br&gt;
illustrate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;阐释 
&lt;br&gt;
IME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;输入法编辑器(Input Method Editor) 
&lt;br&gt;
impersonation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;模拟 
&lt;br&gt;
implementer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;实施者 
&lt;br&gt;
implicit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;隐式 
&lt;br&gt;
import&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;导入,输入 
&lt;br&gt;
in spec&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;规格中 
&lt;br&gt;
In this Section&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;本节内容 
&lt;br&gt;
incoming&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;传入（的） 
&lt;br&gt;
Independent&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;独立 
&lt;br&gt;
indexer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;索引器 
&lt;br&gt;
Indicator Margin Click&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;单击指示器边距 
&lt;br&gt;
inference&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;推理 
&lt;br&gt;
infix notation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;中缀符 
&lt;br&gt;
initial capacity&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;初始容量 
&lt;br&gt;
injected code&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;插入的代码 
&lt;br&gt;
injection attack&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;注入式攻击 
&lt;br&gt;
Inline&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;内联 
&lt;br&gt;
in-place&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;就地 
&lt;br&gt;
input mask&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;输入掩码 
&lt;br&gt;
Input Method Editor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;输入法编辑器 
&lt;br&gt;
Install on Demand&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;即需即装 
&lt;br&gt;
instantiate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;实例化 
&lt;br&gt;
Instantiate Live Controls&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;实例化活控件 
&lt;br&gt;
intaller&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;安装程序 
&lt;br&gt;
integrated&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;集成的 
&lt;br&gt;
Intellisense&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;智能感知 
&lt;br&gt;
interact&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;交互 
&lt;br&gt;
interface&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;接口；界面 
&lt;br&gt;
internal&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;内部的 
&lt;br&gt;
interoperate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;互用；交互操作 
&lt;br&gt;
interrupt&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;中断 
&lt;br&gt;
intrinsic&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;内部的 
&lt;br&gt;
Invalid literal exponent&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;无效指数 
&lt;br&gt;
invocation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;调用 
&lt;br&gt;
invocation list&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;调用列表 
&lt;br&gt;
Is Dirty&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;已更新 
&lt;br&gt;
isolated storage&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;独立存储 
&lt;br&gt;
issue&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;发出 
&lt;br&gt;
item&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;条目;项 
&lt;br&gt;
iterate through&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;循环访问 
&lt;br&gt;
iteration&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;迭代 
&lt;br&gt;
jagged&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;交错的 
&lt;br&gt;
join&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;联接 
&lt;br&gt;
journal&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;日志,日记 
&lt;br&gt;
jump&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;跳转 
&lt;br&gt;
junction table&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;联接表 
&lt;br&gt;
Just-in-time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;实时 
&lt;br&gt;
key&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;关键字；键；项（注:与注册表有关时） 
&lt;br&gt;
key as string&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;键为字符串 
&lt;br&gt;
key feature&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;主要功能 
&lt;br&gt;
key file&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;密钥文件 
&lt;br&gt;
keyset-driven&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;键集驱动 
&lt;br&gt;
keyset-type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;键集类型 
&lt;br&gt;
kill&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;注销；取消 
&lt;br&gt;
Knowledge Base&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;知识库 
&lt;br&gt;
labeled statement&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;标记语句 
&lt;br&gt;
LAME!&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;报告错误！ 
&lt;br&gt;
language equivalents&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;等效语言 
&lt;br&gt;
lead byte&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;前导字节 
&lt;br&gt;
least significant byte&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;最低有效字节 
&lt;br&gt;
ledger&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;帐目型 
&lt;br&gt;
left outer join&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;左外部联接 
&lt;br&gt;
less derived&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;派生程度较小的 
&lt;br&gt;
leverage&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;（综合）利用；平衡 
&lt;br&gt;
lexical scope&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;词法范围 
&lt;br&gt;
lifetime&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;生存期 
&lt;br&gt;
line break&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;分行符 
&lt;br&gt;
list box&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;列表框 
&lt;br&gt;
listener&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;侦听器,侦听者 
&lt;br&gt;
Lite control&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Lite 控件 
&lt;br&gt;
literal&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;literal；文本 
&lt;br&gt;
literal character&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;原义字符 
&lt;br&gt;
load factor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;加载因子 
&lt;br&gt;
local&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;局部的;本地的 
&lt;br&gt;
local machine&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;本地计算机 
&lt;br&gt;
local storage&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;本地存储区 
&lt;br&gt;
Locale&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;区域设置 
&lt;br&gt;
locale&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;区域设置 
&lt;br&gt;
locator&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;定位器 
&lt;br&gt;
look up&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;查阅,查找 
&lt;br&gt;
lookahead&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;预测先行 
&lt;br&gt;
loop through&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;依次通过 
&lt;br&gt;
loosely coupled&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;松耦合 
&lt;br&gt;
low-order&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;低序位 
&lt;br&gt;
Macros Dialog&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;宏对话 
&lt;br&gt;
mainframe&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;主框架；大型机 
&lt;br&gt;
managed&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;托管的 
&lt;br&gt;
manifest&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;清单 
&lt;br&gt;
many-to-many&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;多对多 
&lt;br&gt;
map&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;地图,映射 
&lt;br&gt;
mapping mode&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;映射模式 
&lt;br&gt;
margin&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;边距； 空白 
&lt;br&gt;
margin indicator&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;边距指示符 
&lt;br&gt;
marquee&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;字幕 
&lt;br&gt;
marshal&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;封送 
&lt;br&gt;
marshal-by-reference&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;引用封送 
&lt;br&gt;
marshaler&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;封送拆收器 
&lt;br&gt;
mask&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;屏蔽;掩码 
&lt;br&gt;
Match Case&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;大小写匹配 
&lt;br&gt;
message pump&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;消息泵 
&lt;br&gt;
middle-tier&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;中间层 
&lt;br&gt;
migrate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;迁移 
&lt;br&gt;
Misc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;杂项 
&lt;br&gt;
Miscellaneous&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;杂项 
&lt;br&gt;
moniker&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;名字对象 
&lt;br&gt;
more derived&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;派生程度较大的 
&lt;br&gt;
More Information&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;详细信息 
&lt;br&gt;
more recent&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;较新的 
&lt;br&gt;
multibyte&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;多字节 
&lt;br&gt;
multicast&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;多路广播 
&lt;br&gt;
Multiple-Inheritance&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;多重继承 
&lt;br&gt;
Multiply key&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;乘号键 
&lt;br&gt;
mutually exclusive&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;互相排斥 
&lt;br&gt;
naked attribute&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;naked 属性 
&lt;br&gt;
Naked Function Calls&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;裸函数调用 
&lt;br&gt;
named&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;命名的 
&lt;br&gt;
namespace&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;命名空间 
&lt;br&gt;
nanosecond&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;毫微秒 
&lt;br&gt;
narrowing conversion&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;收缩转换 
&lt;br&gt;
native&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;本机 
&lt;br&gt;
navigator&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;导航器 
&lt;br&gt;
New any&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;新建项 
&lt;br&gt;
New anyAttribute&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;新建属性 
&lt;br&gt;
New Technology file system&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NTFS 文件系统 
&lt;br&gt;
newline&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;换行;换行符 
&lt;br&gt;
No conversions are performed&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;未进行转换 
&lt;br&gt;
nonaggregated&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;非聚集 
&lt;br&gt;
non-scatter&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;非散点程序集 
&lt;br&gt;
notation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;表示法 
&lt;br&gt;
nudge&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;微移 
&lt;br&gt;
Numbered List&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;编号列表 
&lt;br&gt;
Obfuscation&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;模糊处理 
&lt;br&gt;
object-oriented programming&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;面向对象的编程 
&lt;br&gt;
occurrence&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;匹配项；（视上下文也可省略不译） 
&lt;br&gt;
On button down&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;当按钮按下 
&lt;br&gt;
one-based&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;从一开始的 
&lt;br&gt;
One-Click Web Hosting&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;鼠标一点，轻松发布到 Web 
&lt;br&gt;
one-liner&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;单行方式 
&lt;br&gt;
one-to-many&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;一对多 
&lt;br&gt;
one-to-one&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;一对一 
&lt;br&gt;
open&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;打开;开始;开放;左侧的(对于括号等成对的标记) 
&lt;br&gt;
Open Database Connectivity&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;开放式数据库连接 
&lt;br&gt;
open parenthesis&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;左括号 
&lt;br&gt;
Open With&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;打开方式 
&lt;br&gt;
opening brace&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;左大括号 
&lt;br&gt;
opening tag&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;开始标记 
&lt;br&gt;
operator&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;运算符；操作符 
&lt;br&gt;
optimistic concurrency&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;开放式并发 
&lt;br&gt;
ordinal&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;序号 
&lt;br&gt;
Out of Memory&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;内存不足 
&lt;br&gt;
Out Parameter&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;输出接口 
&lt;br&gt;
outgoing interface&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;输出接口 
&lt;br&gt;
Outlined Rectangle&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;空心矩形 
&lt;br&gt;
out-of-band data&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;带外数据 
&lt;br&gt;
out-of-process&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;进程外 
&lt;br&gt;
Overall Steps&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;全部步骤 
&lt;br&gt;
overhead&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;系统开销 
&lt;br&gt;
overlap&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;重叠 
&lt;br&gt;
overload&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;重载 
&lt;br&gt;
Overload Induction&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;重载归纳 
&lt;br&gt;
overload resolution&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;重载决策 
&lt;br&gt;
overridable public function&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;可重写的公共函数 
&lt;br&gt;
override&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;重写 
&lt;br&gt;
Overview&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;概述 
&lt;br&gt;
overwrite&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;改写 
&lt;br&gt;
owned window&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;附属窗口 
&lt;br&gt;
owner-drawn&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;所有者描述的 
&lt;br&gt;
ownership&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;所属权 
&lt;br&gt;
pack pragma&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;压缩杂注 
&lt;br&gt;
package&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;打包 
&lt;br&gt;
Package Body&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;包正文 
&lt;br&gt;
padding&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;空白,边距(n.)；填充 
&lt;br&gt;
pager button&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;页导航按钮 
&lt;br&gt;
pane&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;窗格 
&lt;br&gt;
pass over&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;经过 
&lt;br&gt;
pass-through&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;传递 
&lt;br&gt;
peek&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;查看 
&lt;br&gt;
peer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;对方；对等；对方主机；同级 
&lt;br&gt;
pending&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;挂起 
&lt;br&gt;
per-column&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;按列的；基于列的；针对于列的 
&lt;br&gt;
permission&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;权限 
&lt;br&gt;
persistence&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;持久性；持久性存储 
&lt;br&gt;
persister&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;持续程序 
&lt;br&gt;
Pessimistic locking&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;保守式锁定 
&lt;br&gt;
pie section&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;扇形区 
&lt;br&gt;
pipe&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;管道 
&lt;br&gt;
plate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;盘片 
&lt;br&gt;
pointer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;点,指针 
&lt;br&gt;
pointer-to-member&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;指向成员的指针(n.) 
&lt;br&gt;
policy class&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;策略类 
&lt;br&gt;
polymorphism&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;多态性 
&lt;br&gt;
populate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;填充 
&lt;br&gt;
positioning&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;定位 
&lt;br&gt;
postback&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;回发 
&lt;br&gt;
post-processor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;处理器后 
&lt;br&gt;
potential mod by 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;潜在的以 0 求模 
&lt;br&gt;
pragma&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;杂注 
&lt;br&gt;
precedence&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;优先级 
&lt;br&gt;
precompile&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;预编译 
&lt;br&gt;
predefined&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;预定义的 
&lt;br&gt;
preferences&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;首选项 
&lt;br&gt;
preprocessor directive&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;预处理器指令 
&lt;br&gt;
Presentation Tier&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;表示层 
&lt;br&gt;
primitive&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;基元 
&lt;br&gt;
principal&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;用户；主体 
&lt;br&gt;
process&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;进程 
&lt;br&gt;
profile&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;详细资料 
&lt;br&gt;
profiler&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;分析器 
&lt;br&gt;
profiling error&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;分析错误 
&lt;br&gt;
Program&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;编程 
&lt;br&gt;
programmatic access&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;编程访问 
&lt;br&gt;
progress&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;进度 
&lt;br&gt;
properly&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;正确地，适当地 
&lt;br&gt;
property&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;属性 
&lt;br&gt;
property attributes&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;属性特性 
&lt;br&gt;
provider&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;提供程序 
&lt;br&gt;
pseudo-marshalling&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;伪封送 
&lt;br&gt;
publisher&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;出版商 
&lt;br&gt;
push button&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;下压按钮 
&lt;br&gt;
put area&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;放置区域 
&lt;br&gt;
put pointer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;放置指针 
&lt;br&gt;
put up modal UI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;提供模式用户界面 
&lt;br&gt;
qualified name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;限定名 
&lt;br&gt;
qualifier&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;限定符 
&lt;br&gt;
QuickStart&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;快速入门 
&lt;br&gt;
radio check mark&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;选中标记 
&lt;br&gt;
raise&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;引发 
&lt;br&gt;
Rapid Application Development&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;应用程序快速开发 
&lt;br&gt;
reader&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;读取器；阅读器 
&lt;br&gt;
realign&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;重新对齐 
&lt;br&gt;
rebar band&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rebar 带区 
&lt;br&gt;
rebar control&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rebar 控件 
&lt;br&gt;
Recordset&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;记录集 
&lt;br&gt;
recurrence pattern&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;定期模式 
&lt;br&gt;
recycle&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;回收 
&lt;br&gt;
Redistributable&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;可再发行的 
&lt;br&gt;
reference&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;引用 
&lt;br&gt;
registrar&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;注册器 
&lt;br&gt;
regular expression&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;正则表达式 
&lt;br&gt;
related&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;相关的 
&lt;br&gt;
related words&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;相关字 
&lt;br&gt;
render&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;呈现 
&lt;br&gt;
repeater&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;重复器 
&lt;br&gt;
repository&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;储存库；库 
&lt;br&gt;
reserve area&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;保留区域 
&lt;br&gt;
reset&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;重置 
&lt;br&gt;
reside&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;驻留 
&lt;br&gt;
resident&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;驻留 
&lt;br&gt;
resolve&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;解析 
&lt;br&gt;
resolver&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;冲突解决程序 
&lt;br&gt;
restore&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;还原 
&lt;br&gt;
Retail configuration&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;“发布”配置 
&lt;br&gt;
rethrow&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;再次引发 
&lt;br&gt;
retrieve&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;检索 
&lt;br&gt;
revoke&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;撤消 
&lt;br&gt;
rework&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;改编；返工 
&lt;br&gt;
rich text&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;多格式文本 
&lt;br&gt;
right outer join&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;右外部联接 
&lt;br&gt;
root cause&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;根源 
&lt;br&gt;
Root Relative&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;与根相关的 
&lt;br&gt;
rootkey&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;根项 
&lt;br&gt;
round trip&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;往返行程 
&lt;br&gt;
routine&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;例程 
&lt;br&gt;
row-major&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;行优先 
&lt;br&gt;
Run Length Encoded&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;行程编码 
&lt;br&gt;
run-time library&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;运行时库 
&lt;br&gt;
salted hash&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Salted 哈希技术 
&lt;br&gt;
satellite&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;附属 
&lt;br&gt;
scatter assembly&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;散点程序集 
&lt;br&gt;
schedule&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;安排 (v.) 
&lt;br&gt;
schema&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;架构 
&lt;br&gt;
scope resolution&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;范围解析 
&lt;br&gt;
Scripting Host&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;脚本宿主 
&lt;br&gt;
Scriptlet&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;脚本小程序 
&lt;br&gt;
Section&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;区域;章节 
&lt;br&gt;
See also&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;请参见 
&lt;br&gt;
self-contained&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;独立的 
&lt;br&gt;
self-join&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;自联接 
&lt;br&gt;
self-referenced&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;自引用的 
&lt;br&gt;
semi-trusted&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;不完全受信任的 
&lt;br&gt;
Send Behind&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;下移一层 
&lt;br&gt;
serialize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;序列化 
&lt;br&gt;
shadow&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;影像;镜像 
&lt;br&gt;
shallow copy&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;浅表副本；浅表复制（copy 作动词时） 
&lt;br&gt;
shared checkout&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;以共享方式签出 
&lt;br&gt;
shift the focus&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;变换焦点 
&lt;br&gt;
short circuit operator&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;短路运算符 
&lt;br&gt;
short delay&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;短暂停留 
&lt;br&gt;
shortcut key combinations&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;快捷组合键 
&lt;br&gt;
sibling&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;同辈 
&lt;br&gt;
signaled state&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;终止状态 
&lt;br&gt;
significand&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;有效数 
&lt;br&gt;
single tab stop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;单个 Tab 停靠 
&lt;br&gt;
single-dimensional&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;一维 
&lt;br&gt;
single-document interface&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;单文档界面 (SDI) 
&lt;br&gt;
Single-Inheritance&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;单一继承 
&lt;br&gt;
sink&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;详细资料;分析 
&lt;br&gt;
size grip&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;大小手柄 
&lt;br&gt;
SizeAll&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;四向箭头 
&lt;br&gt;
sizing grip&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;大小调整手柄 
&lt;br&gt;
skeleton&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;主干 
&lt;br&gt;
slash&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;斜杠 
&lt;br&gt;
slider control&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;滑块控件 
&lt;br&gt;
smart pointer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;聪明指针 
&lt;br&gt;
Snap-In&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;管理单元 
&lt;br&gt;
snap-in&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;管理单元 
&lt;br&gt;
snapshot&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;快照 
&lt;br&gt;
specific to&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;特定于；针对 
&lt;br&gt;
specifier&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;说明符 
&lt;br&gt;
spin button control&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;数值调节钮控件 
&lt;br&gt;
spin control&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;数值调节钮控件 
&lt;br&gt;
Split Vertical In&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;左右向中央缩进 
&lt;br&gt;
splitter&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;拆分器 
&lt;br&gt;
splitter window&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;拆分窗口 
&lt;br&gt;
spreadsheet&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;电子表格 
&lt;br&gt;
stack frame&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;堆栈帧 
&lt;br&gt;
stack walk&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;堆栈审核 
&lt;br&gt;
standalone&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;独立 
&lt;br&gt;
stand-alone&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;独立 
&lt;br&gt;
starter application&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;起始应用程序 
&lt;br&gt;
state bag&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;状态袋 
&lt;br&gt;
statement&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;语句 
&lt;br&gt;
stencil&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;模具 
&lt;br&gt;
step a frame&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;通过一帧 
&lt;br&gt;
Step By&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;调试方式 
&lt;br&gt;
Step Into&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;逐语句；进入并单步执行；单步执行 
&lt;br&gt;
Step Out&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;跳出 
&lt;br&gt;
Step Over&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;逐过程 
&lt;br&gt;
step through&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;逐句通过 
&lt;br&gt;
step unit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;单步执行单元 
&lt;br&gt;
step-by-step&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;逐步骤 
&lt;br&gt;
step-by-step details&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;详细步骤信息 
&lt;br&gt;
step-by-step topics&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;分步指导的主题 
&lt;br&gt;
stock&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;常用 
&lt;br&gt;
straight quotation marks&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;直引号 
&lt;br&gt;
streamer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;流转化器 
&lt;br&gt;
stress test&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;压力测试 
&lt;br&gt;
string literal&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;字符串 
&lt;br&gt;
stroke list&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;笔画列表 
&lt;br&gt;
stub&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;存根 
&lt;br&gt;
subkey&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;子项 
&lt;br&gt;
subscriber&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;订户 
&lt;br&gt;
subsequent&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;后面的 
&lt;br&gt;
Substract key&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;减号键 
&lt;br&gt;
superimposed&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;叠加的 
&lt;br&gt;
Surpress banner&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;取消显示版权标志 
&lt;br&gt;
surrogate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;web场 
&lt;br&gt;
symbol store&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;符号存储区 
&lt;br&gt;
symmetric key&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;对称密钥 
&lt;br&gt;
tab&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;选项卡 
&lt;br&gt;
Tab Order&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Tab 键顺序 
&lt;br&gt;
Tabbed&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;选项卡式的 
&lt;br&gt;
tear-off&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;分开的 
&lt;br&gt;
Technical Assistance&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;技术支持 
&lt;br&gt;
technical note&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;技术说明 
&lt;br&gt;
Technote&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;技术说明 
&lt;br&gt;
Templated&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;模板化的 
&lt;br&gt;
terminating line number emission&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;显示终止行号 
&lt;br&gt;
This feature will remain uninstalled&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;将不安装此功能 
&lt;br&gt;
thread&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;线程 
&lt;br&gt;
threading&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;线程处理 
&lt;br&gt;
threading model&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;线程模型 
&lt;br&gt;
threshold&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;阈值 
&lt;br&gt;
tick&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;刻度 
&lt;br&gt;
tick mark&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;刻度线 
&lt;br&gt;
tier&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;层 
&lt;br&gt;
tightly coupled&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;紧耦合 
&lt;br&gt;
to be supplied&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;待提供 
&lt;br&gt;
to be written&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;待补 
&lt;br&gt;
To Fit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;合适大小 
&lt;br&gt;
token&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;标记 
&lt;br&gt;
Top margin&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;上边距 
&lt;br&gt;
top-level&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;顶级 
&lt;br&gt;
trace into&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;跟踪到 
&lt;br&gt;
trackbar&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;跟踪条 
&lt;br&gt;
trail byte&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;尾字节 
&lt;br&gt;
transient&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;瞬态 
&lt;br&gt;
trap&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;捕获 
&lt;br&gt;
trappable&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;可捕获的 
&lt;br&gt;
trigger&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;触发；触发器 
&lt;br&gt;
truncate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;截断 
&lt;br&gt;
type specifier&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;类型说明符 
&lt;br&gt;
typed&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;类型化的 
&lt;br&gt;
typelib&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;类型库 
&lt;br&gt;
typographic&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;版式 
&lt;br&gt;
UI&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;用户界面 
&lt;br&gt;
unattended execution&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;无人参与执行 
&lt;br&gt;
unbox&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;取消装箱 
&lt;br&gt;
underlying&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;基础 
&lt;br&gt;
unescaped&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;非转义的 
&lt;br&gt;
unit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;单位,单元 
&lt;br&gt;
Universal Coordinated Time&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;协调通用时间 
&lt;br&gt;
unmanaged&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;非托管的 
&lt;br&gt;
unmarshal&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;取消封送 (v.) 
&lt;br&gt;
unsized&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;未确定大小的 
&lt;br&gt;
upper bound&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;上限 
&lt;br&gt;
upstream&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;上游 
&lt;br&gt;
usage data&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;惯用数据 
&lt;br&gt;
user interaction&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;用户交互 
&lt;br&gt;
user-drawn&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;用户描述的 
&lt;br&gt;
utility&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;实用工具 
&lt;br&gt;
validator&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;验证程序 
&lt;br&gt;
versionable&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;无版本冲突的 
&lt;br&gt;
View&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;浏览,视图 
&lt;br&gt;
virtual&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;虚拟 
&lt;br&gt;
Walkthrough&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;演练 
&lt;br&gt;
web farm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;web场,web园 
&lt;br&gt;
web garden&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;web园 
&lt;br&gt;
Web-crawling&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Web 爬行遍历 
&lt;br&gt;
wedge button&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;三角形按钮 
&lt;br&gt;
well-behaved&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;功能良好的 
&lt;br&gt;
well-defined&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;定义完善的 
&lt;br&gt;
Whitespace&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;空白 
&lt;br&gt;
wide-character&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;宽字符 
&lt;br&gt;
widening&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;扩大 
&lt;br&gt;
worker thread&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;辅助线程 
&lt;br&gt;
Workspace&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;工作区 
&lt;br&gt;
wrapper&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;包装 
&lt;br&gt;
zero-based&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;从零开始的 
&lt;br&gt;
zomby&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;僵停&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.qihangnet.com"&gt;Qihangnet&lt;/a&gt;. </description>
      <comments>http://www.qihangnet.com/CommentView,guid,f1215e0c-491a-457a-8f5b-387b97ee16ed.aspx</comments>
      <category>ASP.NET</category>
      <category>CSharp</category>
      <category>WEBSERVICE</category>
    </item>
    <item>
      <trackback:ping>http://www.qihangnet.com/Trackback.aspx?guid=a2755efe-7a5c-450a-92b4-8e0454753371</trackback:ping>
      <pingback:server>http://www.qihangnet.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.qihangnet.com/PermaLink,guid,a2755efe-7a5c-450a-92b4-8e0454753371.aspx</pingback:target>
      <dc:creator>衣明志</dc:creator>
      <wfw:comment>http://www.qihangnet.com/CommentView,guid,a2755efe-7a5c-450a-92b4-8e0454753371.aspx</wfw:comment>
      <wfw:commentRss>http://www.qihangnet.com/SyndicationService.asmx/GetEntryCommentsRss?guid=a2755efe-7a5c-450a-92b4-8e0454753371</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <strong>一、从控制台读取东西代码片断：</strong>
        <br />
        <span style="COLOR: #000000">
          <span style="COLOR: #0000ff">using</span> System; <br /><br /><span style="COLOR: #0000ff">class</span> TestReadConsole <br />
{ <br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">void</span> Main() <br />
{ <br />
Console.Write(<span style="COLOR: #848284">"Enter your name:"</span>); <br /><span style="COLOR: #0000ff">string</span> strName = Console.ReadLine(); <br />
Console.WriteLine(<span style="COLOR: #848284">" Hi "</span>+ strName); <br />
} <br />
} </span>
        <br />
        <a name="more">
        </a>
        <br />
        <b>二、读文件代码片断：</b>
        <br />
        <span style="COLOR: #000000">
          <span style="COLOR: #0000ff">using</span> System;  <br /><span style="COLOR: #0000ff">using</span> System.IO;  <br /><br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">class</span> TestReadFile  <br />
{  <br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">void</span> Main(String[] args)  <br />
{  <br /><span style="COLOR: #008200">// Read text file C:\temp\test.txt  <br /></span><br />
FileStream fs = <span style="COLOR: #0000ff">new</span> FileStream(@<span style="COLOR: #848284">"c:\temp\test.txt"</span> , FileMode.Open, FileAccess.Read);  <br />
StreamReader sr = <span style="COLOR: #0000ff">new</span> StreamReader(fs);  <br /><br />
String line=sr.ReadLine(); <br /><span style="COLOR: #0000ff">while</span> (line!=<span style="COLOR: #0000ff">null</span>) <br />
{ <br />
Console.WriteLine(line); <br />
line=sr.ReadLine(); <br />
}  <br /><br />
sr.Close(); <br />
fs.Close(); <br />
}  <br />
}  <br /></span>
        <b>三、写文件代码：</b>
        <br />
        <span style="COLOR: #000000">
          <span style="COLOR: #0000ff">using</span> System;  <br /><span style="COLOR: #0000ff">using</span> System.IO;  <br /><br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">class</span> TestWriteFile  <br />
{  <br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">void</span> Main(String[] args)  <br />
{  <br /><span style="COLOR: #008200">// Create a text file C:\temp\test.txt  <br /></span><br />
FileStream fs = <span style="COLOR: #0000ff">new</span> FileStream(@<span style="COLOR: #848284">"c:\temp\test.txt"</span> , FileMode.OpenOrCreate, FileAccess.Write);  <br />
StreamWriter sw = <span style="COLOR: #0000ff">new</span> StreamWriter(fs);  <br /><span style="COLOR: #008200">// Write to the file using StreamWriter class  <br /></span><br />
sw.BaseStream.Seek(0, SeekOrigin.End);  <br />
sw.WriteLine(<span style="COLOR: #848284">" First Line "</span>);  <br />
sw.WriteLine(<span style="COLOR: #848284">" Second Line"</span>);  <br />
sw.Flush();  <br />
}  <br />
}  <br /></span>
        <b>
          <br />
四、拷贝文件：</b>
        <br />
        <span style="COLOR: #000000">
          <span style="COLOR: #0000ff">using</span> System; <br /><span style="COLOR: #0000ff">using</span> System.IO; <br /><br /><span style="COLOR: #0000ff">class</span> TestCopyFile <br />
{ <br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">void</span> Main() <br />
{ <br />
File.Copy(<span style="COLOR: #848284">"c:\\temp\\source.txt"</span>, <span style="COLOR: #848284">"C:\\temp\\dest.txt"</span> );  <br />
} <br />
} <br /><br /></span>
        <b>五、移动文件：</b>
        <br />
        <span style="COLOR: #000000">
          <span style="COLOR: #0000ff">using</span> System; <br /><span style="COLOR: #0000ff">using</span> System.IO; <br /><br /><span style="COLOR: #0000ff">class</span> TestMoveFile <br />
{ <br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">void</span> Main() <br />
{ <br />
File.Move(<span style="COLOR: #848284">"c:\\temp\\abc.txt"</span>, <span style="COLOR: #848284">"C:\\temp\\def.txt"</span> );  <br />
} <br />
} <br /><br /></span>
        <b>六、使用计时器：</b>
        <br />
        <span style="COLOR: #000000">
          <span style="COLOR: #0000ff">using</span> System; <br /><span style="COLOR: #0000ff">using</span> System.Timers; <br /><br /><span style="COLOR: #0000ff">class</span> TestTimer <br />
{ <br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">void</span> Main() <br />
{ <br />
Timer timer = <span style="COLOR: #0000ff">new</span> Timer(); <br />
timer.Elapsed += <span style="COLOR: #0000ff">new</span> ElapsedEventHandler( DisplayTimeEvent ); <br />
timer.Interval = 1000; <br />
timer.Start(); <br />
timer.Enabled = <span style="COLOR: #0000ff">true</span>; <br /><br /><span style="COLOR: #0000ff">while</span> ( Console.Read() != 'q' ) <br />
{ <br /><br />
} <br />
} <br /><br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">void</span> DisplayTimeEvent( <span style="COLOR: #0000ff">object</span> source, ElapsedEventArgs e ) <br />
{ <br />
Console.Write(<span style="COLOR: #848284">"\r{0}"</span>, DateTime.Now); <br />
} <br />
} <br /><br /></span>
        <b>七、调用外部程序：</b>
        <br />
        <span style="COLOR: #000000">
          <span style="COLOR: #0000ff">class</span> Test  <br />
{  <br /><span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">void</span> Main(<span style="COLOR: #0000ff">string</span>[] args)  <br />
{  <br />
System.Diagnostics.Process.Start(<span style="COLOR: #848284">"notepad.exe"</span>);  <br />
}  <br />
}<br /></span>
        <br />
        <b>ADO.NET方面的：</b>
        <br />
        <b>八、连接Access数据库：</b>
        <br />
        <span style="COLOR: #000000">
          <span style="COLOR: #0000ff">using</span> System; <br /><span style="COLOR: #0000ff">using</span> System.Data; <br /><span style="COLOR: #0000ff">using</span> System.Data.OleDb; <br /><br /><span style="COLOR: #0000ff">class</span> TestADO <br />
{ <br /><span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">void</span> Main(<span style="COLOR: #0000ff">string</span>[] args) <br />
{ <br /><span style="COLOR: #0000ff">string</span> strDSN = <span style="COLOR: #848284">"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\test.mdb"</span>; <br /><span style="COLOR: #0000ff">string</span> strSQL = <span style="COLOR: #848284">"SELECT * FROM employees"</span> ; <br /><br />
OleDbConnection conn = <span style="COLOR: #0000ff">new</span> OleDbConnection(strDSN); <br />
OleDbCommand cmd = <span style="COLOR: #0000ff">new</span> OleDbCommand( strSQL, conn ); <br />
OleDbDataReader reader = <span style="COLOR: #0000ff">null</span>; <br /><span style="COLOR: #0000ff">try</span> <br />
{ <br />
conn.Open(); <br />
reader = cmd.ExecuteReader(); <br /><span style="COLOR: #0000ff">while</span> (reader.Read() ) <br />
{ <br />
Console.WriteLine(<span style="COLOR: #848284">"First Name:{0}, Last Name:{1}"</span>, reader[<span style="COLOR: #848284">"FirstName"</span>], reader[<span style="COLOR: #848284">"LastName"</span>]); <br />
} <br />
} <br /><span style="COLOR: #0000ff">catch</span> (Exception e) <br />
{ <br />
Console.WriteLine(e.Message); <br />
} <br /><span style="COLOR: #0000ff">finally</span> <br />
{ <br />
conn.Close(); <br />
} <br />
} <br />
}<br /></span>  
<br /><b>九、连接SQL Server数据库：</b><br /><span style="COLOR: #000000"><span style="COLOR: #0000ff">using</span> System; <br /><span style="COLOR: #0000ff">using</span> System.Data.SqlClient; <br /><br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">class</span> TestADO <br />
{ <br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">void</span> Main() <br />
{ <br />
SqlConnection conn = <span style="COLOR: #0000ff">new</span> SqlConnection(<span style="COLOR: #848284">"Data Source=localhost; Integrated Security=SSPI; Initial Catalog=pubs"</span>); <br />
SqlCommand cmd = <span style="COLOR: #0000ff">new</span> SqlCommand(<span style="COLOR: #848284">"SELECT * FROM employees"</span>, conn); <br /><span style="COLOR: #0000ff">try</span> <br />
{  <br />
conn.Open(); <br /><br />
SqlDataReader reader = cmd.ExecuteReader();  <br /><span style="COLOR: #0000ff">while</span> (reader.Read()) <br />
{ <br />
Console.WriteLine(<span style="COLOR: #848284">"First Name: {0}, Last Name: {1}"</span>, reader.GetString(0), reader.GetString(1)); <br />
} <br /><br />
reader.Close(); <br />
conn.Close(); <br />
} <br /><span style="COLOR: #0000ff">catch</span>(Exception e) <br />
{ <br />
Console.WriteLine(<span style="COLOR: #848284">"Exception Occured --&gt;&gt; {0}"</span>,e); <br />
}  <br />
} <br />
}<br /></span><br /><b>十、从SQL内读数据到XML：</b><br /><span style="COLOR: #000000"><span style="COLOR: #0000ff">using</span> System; <br /><span style="COLOR: #0000ff">using</span> System.Data; <br /><span style="COLOR: #0000ff">using</span> System.Xml; <br /><span style="COLOR: #0000ff">using</span> System.Data.SqlClient;  <br /><span style="COLOR: #0000ff">using</span> System.IO;  <br /><br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">class</span> TestWriteXML <br />
{  <br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">void</span> Main() <br />
{  <br /><br />
String strFileName=<span style="COLOR: #848284">"c:/temp/output.xml"</span>; <br /><br />
SqlConnection conn = <span style="COLOR: #0000ff">new</span> SqlConnection(<span style="COLOR: #848284">"server=localhost;uid=sa;pwd=;database=db"</span>); <br /><br />
String strSql = <span style="COLOR: #848284">"SELECT FirstName, LastName FROM employees"</span>;  <br /><br />
SqlDataAdapter adapter = <span style="COLOR: #0000ff">new</span> SqlDataAdapter();  <br /><br />
adapter.SelectCommand = <span style="COLOR: #0000ff">new</span> SqlCommand(strSql,conn); <br /><br /><span style="COLOR: #008200">// Build the DataSet <br /></span><br />
DataSet ds = <span style="COLOR: #0000ff">new</span> DataSet(); <br /><br />
adapter.Fill(ds, <span style="COLOR: #848284">"employees"</span>); <br /><br /><span style="COLOR: #008200">// Get a FileStream object <br /></span><br />
FileStream fs = <span style="COLOR: #0000ff">new</span> FileStream(strFileName,FileMode.OpenOrCreate,FileAccess.Write); <br /><br /><span style="COLOR: #008200">// Apply the WriteXml method to write an XML document <br /></span><br />
ds.WriteXml(fs); <br /><br />
fs.Close(); <br /><br />
} <br />
}<br /></span><br /><b>十一、用ADO添加数据到数据库中：</b><br /><span style="COLOR: #000000"><span style="COLOR: #0000ff">using</span> System; <br /><span style="COLOR: #0000ff">using</span> System.Data;  <br /><span style="COLOR: #0000ff">using</span> System.Data.OleDb;  <br /><br /><span style="COLOR: #0000ff">class</span> TestADO <br />
{  <br /><span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">void</span> Main(<span style="COLOR: #0000ff">string</span>[] args)  <br />
{  <br /><span style="COLOR: #0000ff">string</span> strDSN = <span style="COLOR: #848284">"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=c:\test.mdb"</span>;  <br /><span style="COLOR: #0000ff">string</span> strSQL = <span style="COLOR: #848284">"INSERT INTO Employee(FirstName, LastName) valueS('FirstName', 'LastName')"</span> ;  <br /><br /><span style="COLOR: #008200">// create Objects of ADOConnection and ADOCommand  <br /></span><br />
OleDbConnection conn = <span style="COLOR: #0000ff">new</span> OleDbConnection(strDSN);  <br />
OleDbCommand cmd = <span style="COLOR: #0000ff">new</span> OleDbCommand( strSQL, conn );  <br /><span style="COLOR: #0000ff">try</span>  <br />
{  <br />
conn.Open();  <br />
cmd.ExecuteNonQuery();  <br />
}  <br /><span style="COLOR: #0000ff">catch</span> (Exception e)  <br />
{  <br />
Console.WriteLine(<span style="COLOR: #848284">"Oooops. I did it again:\n{0}"</span>, e.Message);  <br />
}  <br /><span style="COLOR: #0000ff">finally</span>  <br />
{  <br />
conn.Close();  <br />
}  <br />
}  <br />
}<br /></span>  
<br /><b>十二、使用OLEConn连接数据库：</b><br /><span style="COLOR: #000000"><span style="COLOR: #0000ff">using</span> System; <br /><span style="COLOR: #0000ff">using</span> System.Data;  <br /><span style="COLOR: #0000ff">using</span> System.Data.OleDb;  <br /><br /><span style="COLOR: #0000ff">class</span> TestADO <br />
{  <br /><span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">void</span> Main(<span style="COLOR: #0000ff">string</span>[] args)  <br />
{  <br /><span style="COLOR: #0000ff">string</span> strDSN = <span style="COLOR: #848284">"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=c:\test.mdb"</span>;  <br /><span style="COLOR: #0000ff">string</span> strSQL = <span style="COLOR: #848284">"SELECT * FROM employee"</span> ;  <br /><br />
OleDbConnection conn = <span style="COLOR: #0000ff">new</span> OleDbConnection(strDSN); <br />
OleDbDataAdapter cmd = <span style="COLOR: #0000ff">new</span> OleDbDataAdapter( strSQL, conn );  <br /><br />
conn.Open(); <br />
DataSet ds = <span style="COLOR: #0000ff">new</span> DataSet(); <br />
cmd.Fill( ds, <span style="COLOR: #848284">"employee"</span> ); <br />
DataTable dt = ds.Tables[0]; <br /><br /><span style="COLOR: #0000ff">foreach</span>( DataRow dr <span style="COLOR: #0000ff">in</span> dt.Rows ) <br />
{ <br />
Console.WriteLine(<span style="COLOR: #848284">"First name: "</span>+ dr[<span style="COLOR: #848284">"FirstName"</span>].ToString() + <span style="COLOR: #848284">" Last name: "</span>+ dr[<span style="COLOR: #848284">"LastName"</span>].ToString()); <br />
} <br />
conn.Close();  <br />
}  <br />
}<br /></span>  
<br /><b>十三、读取表的属性：</b><br /><span style="COLOR: #000000"><span style="COLOR: #0000ff">using</span> System; <br /><span style="COLOR: #0000ff">using</span> System.Data;  <br /><span style="COLOR: #0000ff">using</span> System.Data.OleDb;  <br /><br /><span style="COLOR: #0000ff">class</span> TestADO <br />
{  <br /><span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">void</span> Main(<span style="COLOR: #0000ff">string</span>[] args)  <br />
{  <br /><span style="COLOR: #0000ff">string</span> strDSN = <span style="COLOR: #848284">"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=c:\test.mdb"</span>;  <br /><span style="COLOR: #0000ff">string</span> strSQL = <span style="COLOR: #848284">"SELECT * FROM employee"</span> ;  <br /><br />
OleDbConnection conn = <span style="COLOR: #0000ff">new</span> OleDbConnection(strDSN); <br />
OleDbDataAdapter cmd = <span style="COLOR: #0000ff">new</span> OleDbDataAdapter( strSQL, conn );  <br /><br />
conn.Open(); <br />
DataSet ds = <span style="COLOR: #0000ff">new</span> DataSet(); <br />
cmd.Fill( ds, <span style="COLOR: #848284">"employee"</span> ); <br />
DataTable dt = ds.Tables[0]; <br /><br />
Console.WriteLine(<span style="COLOR: #848284">"Field Name DataType Unique AutoIncrement AllowNull"</span>); <br />
Console.WriteLine(<span style="COLOR: #848284">"=================================================================="</span>); <br /><span style="COLOR: #0000ff">foreach</span>( DataColumn dc <span style="COLOR: #0000ff">in</span> dt.Columns ) <br />
{ <br />
Console.WriteLine(dc.ColumnName+<span style="COLOR: #848284">" , "</span>+dc.DataType +<span style="COLOR: #848284">" ,"</span>+dc.Unique +<span style="COLOR: #848284">" ,"</span>+dc.AutoIncrement+<span style="COLOR: #848284">" ,"</span>+dc.AllowDBNull ); <br />
} <br />
conn.Close();  <br />
}  <br />
}  <br /><br /></span><b>ASP.NET方面的</b><br /><b>十四、一个ASP.NET程序：</b> <br /><!--StartFragment --><pre><span style="COLOR: rgb(0,0,0); BACKGROUND-COLOR: rgb(255,255,0)">&lt;%</span><span style="COLOR: rgb(0,0,0); BACKGROUND-COLOR: rgb(245,245,245)">@Page
Language</span><span style="COLOR: rgb(0,0,0); BACKGROUND-COLOR: rgb(245,245,245)">=</span><span style="COLOR: rgb(0,0,0); BACKGROUND-COLOR: rgb(245,245,245)">"</span><span style="COLOR: rgb(0,0,0); BACKGROUND-COLOR: rgb(245,245,245)">C#</span><span style="COLOR: rgb(0,0,0); BACKGROUND-COLOR: rgb(245,245,245)">"</span><span style="COLOR: rgb(0,0,0); BACKGROUND-COLOR: rgb(245,245,245)"></span><span style="COLOR: rgb(0,0,0); BACKGROUND-COLOR: rgb(255,255,0)">%&gt;<br /></span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">script </span><span style="COLOR: rgb(255,0,0)">runat</span><span style="COLOR: rgb(0,0,255)">="server"</span><span style="COLOR: rgb(0,0,255)">&gt;<br /></span><span style="COLOR: rgb(0,0,0); BACKGROUND-COLOR: rgb(245,245,245)"></span><span style="COLOR: rgb(0,0,255); BACKGROUND-COLOR: rgb(245,245,245)">void</span><span style="COLOR: rgb(0,0,0); BACKGROUND-COLOR: rgb(245,245,245)"> Button1_Click(Objectsender,
EventArgs e)<br />
{<br />
Label1.Text</span><span style="COLOR: rgb(0,0,0); BACKGROUND-COLOR: rgb(245,245,245)">=</span><span style="COLOR: rgb(0,0,0); BACKGROUND-COLOR: rgb(245,245,245)">TextBox1.Text;<br />
} 
<br /></span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">script</span><span style="COLOR: rgb(0,0,255)">&gt;<br /></span><span style="COLOR: rgb(0,0,0)"></span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">html</span><span style="COLOR: rgb(0,0,255)">&gt;<br /></span><span style="COLOR: rgb(0,0,0)"></span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">head</span><span style="COLOR: rgb(0,0,255)">&gt;<br /></span><span style="COLOR: rgb(0,0,0)"></span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">head</span><span style="COLOR: rgb(0,0,255)">&gt;<br /></span><span style="COLOR: rgb(0,0,0)"></span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">body</span><span style="COLOR: rgb(0,0,255)">&gt;<br /></span><span style="COLOR: rgb(0,0,0)"></span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">form </span><span style="COLOR: rgb(255,0,0)">runat</span><span style="COLOR: rgb(0,0,255)">="server"</span><span style="COLOR: rgb(0,0,255)">&gt;<br /></span><span style="COLOR: rgb(0,0,0)"></span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">p</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"></span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">br </span><span style="COLOR: rgb(0,0,255)">/&gt;</span><span style="COLOR: rgb(0,0,0)"> Enteryour
name: 
<br /></span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">asp:TextBox </span><span style="COLOR: rgb(255,0,0)">id</span><span style="COLOR: rgb(0,0,255)">="TextBox1"</span><span style="COLOR: rgb(255,0,0)"> runat</span><span style="COLOR: rgb(0,0,255)">="server"</span><span style="COLOR: rgb(0,0,255)">&gt;&lt;/</span><span style="COLOR: rgb(128,0,0)">asp:TextBox</span><span style="COLOR: rgb(0,0,255)">&gt;<br /></span><span style="COLOR: rgb(0,0,0)"></span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">p</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"></span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">p</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br /></span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">b</span><span style="COLOR: rgb(0,0,255)">&gt;&lt;</span><span style="COLOR: rgb(128,0,0)">asp:Label </span><span style="COLOR: rgb(255,0,0)">id</span><span style="COLOR: rgb(0,0,255)">="Label1"</span><span style="COLOR: rgb(255,0,0)"> runat</span><span style="COLOR: rgb(0,0,255)">="server"</span><span style="COLOR: rgb(255,0,0)"> Width</span><span style="COLOR: rgb(0,0,255)">="247px"</span><span style="COLOR: rgb(0,0,255)">&gt;&lt;/</span><span style="COLOR: rgb(128,0,0)">asp:Label</span><span style="COLOR: rgb(0,0,255)">&gt;&lt;/</span><span style="COLOR: rgb(128,0,0)">b</span><span style="COLOR: rgb(0,0,255)">&gt;<br /></span><span style="COLOR: rgb(0,0,0)"></span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">p</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"></span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">p</span><span style="COLOR: rgb(0,0,255)">&gt;</span><span style="COLOR: rgb(0,0,0)"><br /></span><span style="COLOR: rgb(0,0,255)">&lt;</span><span style="COLOR: rgb(128,0,0)">asp:Button </span><span style="COLOR: rgb(255,0,0)">id</span><span style="COLOR: rgb(0,0,255)">="Button1"</span><span style="COLOR: rgb(255,0,0)"> onclick</span><span style="COLOR: rgb(0,0,255)">="Button1_Click"</span><span style="COLOR: rgb(255,0,0)"> runat</span><span style="COLOR: rgb(0,0,255)">="server"</span><span style="COLOR: rgb(255,0,0)"> Text</span><span style="COLOR: rgb(0,0,255)">="Submit"</span><span style="COLOR: rgb(0,0,255)">&gt;<br />
&lt;/</span><span style="COLOR: rgb(128,0,0)">asp:Button</span><span style="COLOR: rgb(0,0,255)">&gt;<br /></span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">p</span><span style="COLOR: rgb(0,0,255)">&gt;<br /></span><span style="COLOR: rgb(0,0,0)"></span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">form</span><span style="COLOR: rgb(0,0,255)">&gt;<br /></span><span style="COLOR: rgb(0,0,0)"></span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">body</span><span style="COLOR: rgb(0,0,255)">&gt;<br /></span><span style="COLOR: rgb(0,0,0)"></span><span style="COLOR: rgb(0,0,255)">&lt;/</span><span style="COLOR: rgb(128,0,0)">html</span><span style="COLOR: rgb(0,0,255)">&gt;</span></pre><b>WinForm开发：</b><br /><b>十五、一个简单的WinForm程序：</b><br /><span style="COLOR: #000000"><span style="COLOR: #0000ff">using</span> System; <br /><span style="COLOR: #0000ff">using</span> System.Drawing; <br /><span style="COLOR: #0000ff">using</span> System.Collections; <br /><span style="COLOR: #0000ff">using</span> System.ComponentModel; <br /><span style="COLOR: #0000ff">using</span> System.Windows.Forms; <br /><span style="COLOR: #0000ff">using</span> System.Data; <br /><br /><br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">class</span> SimpleForm : System.Windows.Forms.Form <br />
{ <br /><br /><span style="COLOR: #0000ff">private</span> System.ComponentModel.Container components = <span style="COLOR: #0000ff">null</span>; <br /><span style="COLOR: #0000ff">private</span> System.Windows.Forms.Button button1; <br /><span style="COLOR: #0000ff">private</span> System.Windows.Forms.TextBox textBox1; <br /><span style="COLOR: #0000ff">public</span> SimpleForm() <br />
{ <br />
InitializeComponent(); <br />
} <br /><br /><span style="COLOR: #0000ff">protected</span> <span style="COLOR: #0000ff">override</span> <span style="COLOR: #0000ff">void</span> Dispose( <span style="COLOR: #0000ff">bool</span> disposing ) <br />
{ <br /><span style="COLOR: #0000ff">if</span>( disposing ) <br />
{ <br /><span style="COLOR: #0000ff">if</span> (components != <span style="COLOR: #0000ff">null</span>) <br />
{ <br />
components.Dispose(); <br />
} <br />
} <br /><span style="COLOR: #0000ff">base</span>.Dispose( disposing ); <br />
} <br /><span style="COLOR: #6699cc"><br />
#region Windows Form Designer generated code <br /></span><br /><span style="COLOR: #0000ff">private</span> <span style="COLOR: #0000ff">void</span> InitializeComponent() <br />
{ <br /><br /><span style="COLOR: #0000ff">this</span>.components = <span style="COLOR: #0000ff">new</span> System.ComponentModel.Container(); <br /><span style="COLOR: #0000ff">this</span>.Size = <span style="COLOR: #0000ff">new</span> System.Drawing.Size(300,300); <br /><span style="COLOR: #0000ff">this</span>.Text = <span style="COLOR: #848284">"Form1"</span>; <br /><br /><span style="COLOR: #0000ff">this</span>.button1 = <span style="COLOR: #0000ff">new</span> System.Windows.Forms.Button(); <br /><span style="COLOR: #0000ff">this</span>.textBox1 = <span style="COLOR: #0000ff">new</span> System.Windows.Forms.TextBox(); <br /><span style="COLOR: #0000ff">this</span>.SuspendLayout();  <br /><span style="COLOR: #008200">// <br /></span><br /><span style="COLOR: #008200">// button1 <br /></span><br /><span style="COLOR: #008200">// <br /></span><br /><br /><span style="COLOR: #0000ff">this</span>.button1.Location = <span style="COLOR: #0000ff">new</span> System.Drawing.Point(8, 16); <br /><span style="COLOR: #0000ff">this</span>.button1.Name = <span style="COLOR: #848284">"button1"</span>; <br /><span style="COLOR: #0000ff">this</span>.button1.Size = <span style="COLOR: #0000ff">new</span> System.Drawing.Size(80, 24); <br /><span style="COLOR: #0000ff">this</span>.button1.TabIndex = 0; <br /><span style="COLOR: #0000ff">this</span>.button1.Text = <span style="COLOR: #848284">"button1"</span>; <br /><br /><span style="COLOR: #008200">// <br /></span><br /><span style="COLOR: #008200">// textBox1 <br /></span><br /><span style="COLOR: #008200">// <br /></span><br /><span style="COLOR: #0000ff">this</span>.textBox1.Location = <span style="COLOR: #0000ff">new</span> System.Drawing.Point(112, 16); <br /><span style="COLOR: #0000ff">this</span>.textBox1.Name = <span style="COLOR: #848284">"textBox1"</span>; <br /><span style="COLOR: #0000ff">this</span>.textBox1.Size = <span style="COLOR: #0000ff">new</span> System.Drawing.Size(160, 20); <br /><span style="COLOR: #0000ff">this</span>.textBox1.TabIndex = 1; <br /><span style="COLOR: #0000ff">this</span>.textBox1.Text = <span style="COLOR: #848284">"textBox1"</span>; <br /><span style="COLOR: #008200">// <br /></span><br /><span style="COLOR: #008200">// Form1 <br /></span><br /><span style="COLOR: #008200">// <br /></span><br /><br /><span style="COLOR: #0000ff">this</span>.AutoScaleBaseSize = <span style="COLOR: #0000ff">new</span> System.Drawing.Size(5, 13); <br /><span style="COLOR: #0000ff">this</span>.ClientSize = <span style="COLOR: #0000ff">new</span> System.Drawing.Size(292, 273); <br /><span style="COLOR: #0000ff">this</span>.Controls.AddRange(<span style="COLOR: #0000ff">new</span> System.Windows.Forms.Control[] { <br /><span style="COLOR: #0000ff">this</span>.textBox1, <br /><span style="COLOR: #0000ff">this</span>.button1}); <br /><span style="COLOR: #0000ff">this</span>.Name = <span style="COLOR: #848284">"Form1"</span>; <br /><span style="COLOR: #0000ff">this</span>.Text = <span style="COLOR: #848284">"Form1"</span>; <br /><span style="COLOR: #0000ff">this</span>.ResumeLayout(<span style="COLOR: #0000ff">false</span>);  <br /><br />
} <br /></span><span style="COLOR: #6699cc">#endregion <br /></span><br /><br />
[STAThread] <br /><span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">void</span> Main() <br />
{ <br />
Application.Run(<span style="COLOR: #0000ff">new</span> SimpleForm()); <br />
}  <br />
} 
<br /><br /><b>十六、运行时显示自己定义的图标：</b><br /><span style="COLOR: #000000"><span style="COLOR: #008200">//load icon and set to form <br /></span><br />
System.Drawing.Icon ico = <span style="COLOR: #0000ff">new</span> System.Drawing.Icon(@<span style="COLOR: #848284">"c:\temp\app.ico"</span>); <br /><span style="COLOR: #0000ff">this</span>.Icon = ico; <br /><br /></span><b>十七、添加组件到ListBox中：</b><br /><span style="COLOR: #000000"><span style="COLOR: #0000ff">private</span> <span style="COLOR: #0000ff">void</span> Form1_Load(<span style="COLOR: #0000ff">object</span> sender, System.EventArgs e) <br />
{ <br /><span style="COLOR: #0000ff">string</span> str = <span style="COLOR: #848284">"First item"</span>; <br /><span style="COLOR: #0000ff">int</span> i = 23; <br /><span style="COLOR: #0000ff">float</span> flt = 34.98f;  <br />
listBox1.Items.Add(str); <br />
listBox1.Items.Add(i.ToString()); <br />
listBox1.Items.Add(flt.ToString()); <br />
listBox1.Items.Add(<span style="COLOR: #848284">"Last Item in the List Box"</span>); <br />
}<br /></span>  
<br /><b>网络方面的：</b><br /><b>十八、取得IP地址：</b><br /><span style="COLOR: #000000"><span style="COLOR: #0000ff">using</span> System; <br /><span style="COLOR: #0000ff">using</span> System.Net; <br /><br /><span style="COLOR: #0000ff">class</span> GetIP <br />
{ <br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">void</span> Main() <br />
{ <br />
IPHostEntry ipEntry = Dns.GetHostByName (<span style="COLOR: #848284">"localhost"</span>); <br />
IPAddress [] IpAddr = ipEntry.AddressList; <br /><span style="COLOR: #0000ff">for</span> (<span style="COLOR: #0000ff">int</span> i = 0; i &lt; IpAddr.Length; i++) <br />
{  <br />
Console.WriteLine (<span style="COLOR: #848284">"IP Address {0}: {1} "</span>, i, IpAddr.ToString ()); <br />
} <br />
} <br />
}<br /></span><br /><b>十九、取得机器名称：</b><br /><span style="COLOR: #000000"><span style="COLOR: #0000ff">using</span> System; <br /><span style="COLOR: #0000ff">using</span> System.Net; <br /><br /><span style="COLOR: #0000ff">class</span> GetIP <br />
{ <br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">void</span> Main() <br />
{ <br />
Console.WriteLine (<span style="COLOR: #848284">"Host name : {0}"</span>, Dns.GetHostName()); <br />
} <br />
}</span><br /><br /><b>二十、发送邮件：</b><br /><span style="COLOR: #000000"><span style="COLOR: #0000ff">using</span> System; <br /><span style="COLOR: #0000ff">using</span> System.Web; <br /><span style="COLOR: #0000ff">using</span> System.Web.Mail; <br /><br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">class</span> TestSendMail <br />
{ <br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">void</span> Main() <br />
{ <br /><span style="COLOR: #0000ff">try</span> <br />
{ <br /><span style="COLOR: #008200">// Construct a new mail message  <br /></span><br />
MailMessage message = <span style="COLOR: #0000ff">new</span> MailMessage(); <br />
message.From = <span style="COLOR: #848284">"from@domain.com"</span>; <br />
message.To = <span style="COLOR: #848284">"pengyun@cobainsoft.com"</span>; <br />
message.Cc = <span style="COLOR: #848284">""</span>; <br />
message.Bcc = <span style="COLOR: #848284">""</span>; <br />
message.Subject = <span style="COLOR: #848284">"Subject"</span>; <br />
message.Body = <span style="COLOR: #848284">"Content of message"</span>; <br /><br /><span style="COLOR: #008200">//if you want attach file with this mail, add the line below <br /></span><br />
message.Attachments.Add(<span style="COLOR: #0000ff">new</span> MailAttachment(<span style="COLOR: #848284">"c:\\attach.txt"</span>, MailEncoding.Base64)); <br /><br /><span style="COLOR: #008200">// Send the message <br /></span><br />
SmtpMail.Send(message);  <br />
System.Console.WriteLine(<span style="COLOR: #848284">"Message has been sent"</span>); <br />
} <br /><br /><span style="COLOR: #0000ff">catch</span>(Exception ex) <br />
{ <br />
System.Console.WriteLine(ex.Message.ToString()); <br />
} <br /><br />
} <br />
}<br /></span><br /><b>二十一、根据IP地址得出机器名称：</b><br /><span style="COLOR: #000000"><span style="COLOR: #0000ff">using</span> System; <br /><span style="COLOR: #0000ff">using</span> System.Net; <br /><br /><span style="COLOR: #0000ff">class</span> ResolveIP <br />
{ <br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">void</span> Main() <br />
{ <br />
IPHostEntry ipEntry = Dns.Resolve(<span style="COLOR: #848284">"172.29.9.9"</span>); <br />
Console.WriteLine (<span style="COLOR: #848284">"Host name : {0}"</span>, ipEntry.HostName);  <br />
} <br />
}<br /></span><br /><b>GDI+方面的：</b><br /><b>二十二、GDI+入门介绍：</b><br /><span style="COLOR: #000000"><span style="COLOR: #0000ff">using</span> System; <br /><span style="COLOR: #0000ff">using</span> System.Drawing; <br /><span style="COLOR: #0000ff">using</span> System.Collections; <br /><span style="COLOR: #0000ff">using</span> System.ComponentModel; <br /><span style="COLOR: #0000ff">using</span> System.Windows.Forms; <br /><span style="COLOR: #0000ff">using</span> System.Data; <br /><br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">class</span> Form1 : System.Windows.Forms.Form <br />
{ <br /><span style="COLOR: #0000ff">private</span> System.ComponentModel.Container components = <span style="COLOR: #0000ff">null</span>; <br /><br /><span style="COLOR: #0000ff">public</span> Form1() <br />
{ <br />
InitializeComponent(); <br />
} <br /><br /><span style="COLOR: #0000ff">protected</span> <span style="COLOR: #0000ff">override</span> <span style="COLOR: #0000ff">void</span> Dispose( <span style="COLOR: #0000ff">bool</span> disposing ) <br />
{ <br /><span style="COLOR: #0000ff">if</span>( disposing ) <br />
{ <br /><span style="COLOR: #0000ff">if</span> (components != <span style="COLOR: #0000ff">null</span>)  <br />
{ <br />
components.Dispose(); <br />
} <br />
} <br /><span style="COLOR: #0000ff">base</span>.Dispose( disposing ); <br />
} <br /><span style="COLOR: #6699cc"><br />
#region Windows Form Designer generated code <br /></span><br /><span style="COLOR: #0000ff">private</span> <span style="COLOR: #0000ff">void</span> InitializeComponent() <br />
{ <br /><span style="COLOR: #0000ff">this</span>.AutoScaleBaseSize = <span style="COLOR: #0000ff">new</span> System.Drawing.Size(5, 13); <br /><span style="COLOR: #0000ff">this</span>.ClientSize = <span style="COLOR: #0000ff">new</span> System.Drawing.Size(292, 273); <br /><span style="COLOR: #0000ff">this</span>.Name = <span style="COLOR: #848284">"Form1"</span>; <br /><span style="COLOR: #0000ff">this</span>.Text = <span style="COLOR: #848284">"Form1"</span>; <br /><span style="COLOR: #0000ff">this</span>.Paint += <span style="COLOR: #0000ff">new</span> System.Windows.Forms.PaintEventHandler(<span style="COLOR: #0000ff">this</span>.Form1_Paint); <br />
} <br /></span><span style="COLOR: #6699cc">#endregion <br /></span><br /><br />
[STAThread] <br /><span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">void</span> Main()  <br />
{ <br />
Application.Run(<span style="COLOR: #0000ff">new</span> Form1()); <br />
} <br /><br /><span style="COLOR: #0000ff">private</span> <span style="COLOR: #0000ff">void</span> Form1_Paint(<span style="COLOR: #0000ff">object</span> sender, System.Windows.Forms.PaintEventArgs e) <br />
{ <br />
Graphics g=e.Graphics; <br />
g.DrawLine(<span style="COLOR: #0000ff">new</span> Pen(Color.Blue),10,10,210,110); <br />
g.DrawRectangle(<span style="COLOR: #0000ff">new</span> Pen(Color.Red),10,10,200,100); <br />
g.DrawEllipse(<span style="COLOR: #0000ff">new</span> Pen(Color.Yellow),10,150,200,100); <br />
} <br />
}<br /><br /><b>XML方面的：</b><br /><b>二十三、读取XML文件：</b><br /><span style="COLOR: #000000"><span style="COLOR: #0000ff">using</span> System; <br /><span style="COLOR: #0000ff">using</span> System.Xml;  <br /><br /><span style="COLOR: #0000ff">class</span> TestReadXML <br />
{ <br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">void</span> Main() <br />
{ <br /><br />
XmlTextReader reader = <span style="COLOR: #0000ff">new</span> XmlTextReader(<span style="COLOR: #848284">"C:\\test.xml"</span>); <br />
reader.Read(); <br /><br /><span style="COLOR: #0000ff">while</span> (reader.Read()) <br />
{  <br />
reader.MoveToElement(); <br />
Console.WriteLine(<span style="COLOR: #848284">"XmlTextReader Properties Test"</span>); <br />
Console.WriteLine(<span style="COLOR: #848284">"==================="</span>);  <br /><br /><span style="COLOR: #008200">// Read this properties of element and display them on console <br /></span><br />
Console.WriteLine(<span style="COLOR: #848284">"Name:"</span> + reader.Name); <br />
Console.WriteLine(<span style="COLOR: #848284">"Base URI:"</span> + reader.BaseURI); <br />
Console.WriteLine(<span style="COLOR: #848284">"Local Name:"</span> + reader.LocalName); <br />
Console.WriteLine(<span style="COLOR: #848284">"Attribute Count:"</span> + reader.AttributeCount.ToString()); <br />
Console.WriteLine(<span style="COLOR: #848284">"Depth:"</span> + reader.Depth.ToString()); <br />
Console.WriteLine(<span style="COLOR: #848284">"Line Number:"</span> + reader.LineNumber.ToString()); <br />
Console.WriteLine(<span style="COLOR: #848284">"Node Type:"</span> + reader.NodeType.ToString()); <br />
Console.WriteLine(<span style="COLOR: #848284">"Attribute Count:"</span> + reader.value.ToString()); <br />
}  <br />
}  <br />
} <br /></span><br /><b>二十四、写XML文件：</b><br /><span style="COLOR: #000000"><span style="COLOR: #0000ff">using</span> System;  <br /><span style="COLOR: #0000ff">using</span> System.Xml;  <br /><br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">class</span> TestWriteXMLFile  <br />
{  <br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">int</span> Main(<span style="COLOR: #0000ff">string</span>[] args)  <br />
{  <br /><span style="COLOR: #0000ff">try</span>  <br />
{  <br /><span style="COLOR: #008200">// Creates an XML file is not exist  <br /></span><br />
XmlTextWriter writer = <span style="COLOR: #0000ff">new</span> XmlTextWriter(<span style="COLOR: #848284">"C:\\temp\\xmltest.xml"</span>, <span style="COLOR: #0000ff">null</span>);  <br /><span style="COLOR: #008200">// Starts a new document  <br /></span><br />
writer.WriteStartDocument();  <br /><span style="COLOR: #008200">//Write comments  <br /></span><br />
writer.WriteComment(<span style="COLOR: #848284">"Commentss: XmlWriter Test Program"</span>);  <br />
writer.WriteProcessingInstruction(<span style="COLOR: #848284">"Instruction"</span>,<span style="COLOR: #848284">"Person Record"</span>);  <br /><span style="COLOR: #008200">// Add elements to the file  <br /></span><br />
writer.WriteStartElement(<span style="COLOR: #848284">"p"</span>, <span style="COLOR: #848284">"person"</span>, <span style="COLOR: #848284">"urn:person"</span>);  <br />
writer.WriteStartElement(<span style="COLOR: #848284">"LastName"</span>,<span style="COLOR: #848284">""</span>);  <br />
writer.WriteString(<span style="COLOR: #848284">"Chand"</span>);  <br />
writer.WriteEndElement();  <br />
writer.WriteStartElement(<span style="COLOR: #848284">"FirstName"</span>,<span style="COLOR: #848284">""</span>);  <br />
writer.WriteString(<span style="COLOR: #848284">"Mahesh"</span>);  <br />
writer.WriteEndElement();  <br />
writer.WriteElementInt16(<span style="COLOR: #848284">"age"</span>,<span style="COLOR: #848284">""</span>, 25);  <br /><span style="COLOR: #008200">// Ends the document  <br /></span><br />
writer.WriteEndDocument();  <br />
}  <br /><span style="COLOR: #0000ff">catch</span> (Exception e)  <br />
{  <br />
Console.WriteLine (<span style="COLOR: #848284">"Exception: {0}"</span>, e.ToString());  <br />
}  <br /><span style="COLOR: #0000ff">return</span> 0;  <br />
}  <br />
}  <br /><br /></span><b>Web Service方面的：</b><br /><b>二十五、一个Web Service的小例子：</b> <br /><span style="COLOR: #000000"> <br /><br /><span style="COLOR: #0000ff">using</span> System.Web.Services; <br /><br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">class</span> TestWS : System.Web.Services.WebService <br />
{ <br />
[WebMethod()] <br /><span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">string</span> StringFromWebService() <br />
{ <br /><span style="COLOR: #0000ff">return</span> <span style="COLOR: #848284">"This is a string from web service."</span>; <br />
} <br />
}</span><br /><hr />
This weblog is sponsored by <a href="http://www.qihangnet.com">Qihangnet</a>. 
</body>
      <title>C#入门代码集</title>
      <guid isPermaLink="false">http://www.qihangnet.com/PermaLink,guid,a2755efe-7a5c-450a-92b4-8e0454753371.aspx</guid>
      <link>http://www.qihangnet.com/PermaLink,guid,a2755efe-7a5c-450a-92b4-8e0454753371.aspx</link>
      <pubDate>Wed, 23 Mar 2005 08:44:26 GMT</pubDate>
      <description>&lt;strong&gt;一、从控制台读取东西代码片断：&lt;/strong&gt; 
&lt;br&gt;
&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;TestReadConsole&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Main()&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
Console.Write(&lt;span style="COLOR: #848284"&gt;"Enter&amp;nbsp;your&amp;nbsp;name:"&lt;/span&gt;);&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;strName&amp;nbsp;=&amp;nbsp;Console.ReadLine();&amp;nbsp;&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"&amp;nbsp;Hi&amp;nbsp;"&lt;/span&gt;+&amp;nbsp;strName);&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;/span&gt; 
&lt;br&gt;
&lt;a name=more&gt;&lt;/a&gt;
&lt;br&gt;
&lt;b&gt;二、读文件代码片断：&lt;/b&gt; 
&lt;br&gt;
&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.IO;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;TestReadFile&amp;nbsp;&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Main(String[]&amp;nbsp;args)&amp;nbsp;&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;Read&amp;nbsp;text&amp;nbsp;file&amp;nbsp;C:\temp\test.txt&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
FileStream&amp;nbsp;fs&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;FileStream(@&lt;span style="COLOR: #848284"&gt;"c:\temp\test.txt"&lt;/span&gt;&amp;nbsp;,&amp;nbsp;FileMode.Open,&amp;nbsp;FileAccess.Read);&amp;nbsp;&amp;nbsp;&lt;br&gt;
StreamReader&amp;nbsp;sr&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;StreamReader(fs);&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
String&amp;nbsp;line=sr.ReadLine();&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;while&lt;/span&gt;&amp;nbsp;(line!=&lt;span style="COLOR: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
Console.WriteLine(line);&amp;nbsp;&lt;br&gt;
line=sr.ReadLine();&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
sr.Close();&amp;nbsp;&lt;br&gt;
fs.Close();&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;/span&gt;&lt;b&gt;三、写文件代码：&lt;/b&gt; 
&lt;br&gt;
&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.IO;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;TestWriteFile&amp;nbsp;&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Main(String[]&amp;nbsp;args)&amp;nbsp;&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;Create&amp;nbsp;a&amp;nbsp;text&amp;nbsp;file&amp;nbsp;C:\temp\test.txt&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
FileStream&amp;nbsp;fs&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;FileStream(@&lt;span style="COLOR: #848284"&gt;"c:\temp\test.txt"&lt;/span&gt;&amp;nbsp;,&amp;nbsp;FileMode.OpenOrCreate,&amp;nbsp;FileAccess.Write);&amp;nbsp;&amp;nbsp;&lt;br&gt;
StreamWriter&amp;nbsp;sw&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;StreamWriter(fs);&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;Write&amp;nbsp;to&amp;nbsp;the&amp;nbsp;file&amp;nbsp;using&amp;nbsp;StreamWriter&amp;nbsp;class&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
sw.BaseStream.Seek(0,&amp;nbsp;SeekOrigin.End);&amp;nbsp;&amp;nbsp;&lt;br&gt;
sw.WriteLine(&lt;span style="COLOR: #848284"&gt;"&amp;nbsp;First&amp;nbsp;Line&amp;nbsp;"&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&lt;br&gt;
sw.WriteLine(&lt;span style="COLOR: #848284"&gt;"&amp;nbsp;Second&amp;nbsp;Line"&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&lt;br&gt;
sw.Flush();&amp;nbsp;&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;/span&gt;&lt;b&gt;
&lt;br&gt;
四、拷贝文件：&lt;/b&gt; 
&lt;br&gt;
&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.IO;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;TestCopyFile&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Main()&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
File.Copy(&lt;span style="COLOR: #848284"&gt;"c:\\temp\\source.txt"&lt;/span&gt;,&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"C:\\temp\\dest.txt"&lt;/span&gt;&amp;nbsp;);&amp;nbsp;&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;&lt;b&gt;五、移动文件：&lt;/b&gt; 
&lt;br&gt;
&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.IO;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;TestMoveFile&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Main()&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
File.Move(&lt;span style="COLOR: #848284"&gt;"c:\\temp\\abc.txt"&lt;/span&gt;,&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"C:\\temp\\def.txt"&lt;/span&gt;&amp;nbsp;);&amp;nbsp;&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;&lt;b&gt;六、使用计时器：&lt;/b&gt; 
&lt;br&gt;
&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Timers;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;TestTimer&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Main()&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
Timer&amp;nbsp;timer&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;Timer();&amp;nbsp;&lt;br&gt;
timer.Elapsed&amp;nbsp;+=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;ElapsedEventHandler(&amp;nbsp;DisplayTimeEvent&amp;nbsp;);&amp;nbsp;&lt;br&gt;
timer.Interval&amp;nbsp;=&amp;nbsp;1000;&amp;nbsp;&lt;br&gt;
timer.Start();&amp;nbsp;&lt;br&gt;
timer.Enabled&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;true&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;while&lt;/span&gt;&amp;nbsp;(&amp;nbsp;Console.Read()&amp;nbsp;!=&amp;nbsp;'q'&amp;nbsp;)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;DisplayTimeEvent(&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;object&lt;/span&gt;&amp;nbsp;source,&amp;nbsp;ElapsedEventArgs&amp;nbsp;e&amp;nbsp;)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
Console.Write(&lt;span style="COLOR: #848284"&gt;"\r{0}"&lt;/span&gt;,&amp;nbsp;DateTime.Now);&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;&lt;b&gt;七、调用外部程序：&lt;/b&gt; 
&lt;br&gt;
&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;Test&amp;nbsp;&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Main(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;[]&amp;nbsp;args)&amp;nbsp;&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&amp;nbsp;&lt;br&gt;
System.Diagnostics.Process.Start(&lt;span style="COLOR: #848284"&gt;"notepad.exe"&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&amp;nbsp;&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;b&gt;ADO.NET方面的：&lt;/b&gt; 
&lt;br&gt;
&lt;b&gt;八、连接Access数据库：&lt;/b&gt; 
&lt;br&gt;
&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Data;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Data.OleDb;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;TestADO&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Main(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;[]&amp;nbsp;args)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;strDSN&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"Provider=Microsoft.Jet.OLEDB.4.0;Data&amp;nbsp;Source=c:\\test.mdb"&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;strSQL&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"SELECT&amp;nbsp;*&amp;nbsp;FROM&amp;nbsp;employees"&lt;/span&gt;&amp;nbsp;;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
OleDbConnection&amp;nbsp;conn&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;OleDbConnection(strDSN);&amp;nbsp;&lt;br&gt;
OleDbCommand&amp;nbsp;cmd&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;OleDbCommand(&amp;nbsp;strSQL,&amp;nbsp;conn&amp;nbsp;);&amp;nbsp;&lt;br&gt;
OleDbDataReader&amp;nbsp;reader&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;null&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;try&lt;/span&gt;&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
conn.Open();&amp;nbsp;&lt;br&gt;
reader&amp;nbsp;=&amp;nbsp;cmd.ExecuteReader();&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;while&lt;/span&gt;&amp;nbsp;(reader.Read()&amp;nbsp;)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"First&amp;nbsp;Name:{0},&amp;nbsp;Last&amp;nbsp;Name:{1}"&lt;/span&gt;,&amp;nbsp;reader[&lt;span style="COLOR: #848284"&gt;"FirstName"&lt;/span&gt;],&amp;nbsp;reader[&lt;span style="COLOR: #848284"&gt;"LastName"&lt;/span&gt;]);&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;catch&lt;/span&gt;&amp;nbsp;(Exception&amp;nbsp;e)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
Console.WriteLine(e.Message);&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;finally&lt;/span&gt;&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
conn.Close();&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;&amp;nbsp; 
&lt;br&gt;
&lt;b&gt;九、连接SQL&amp;nbsp;Server数据库：&lt;/b&gt; 
&lt;br&gt;
&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Data.SqlClient;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;TestADO&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Main()&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
SqlConnection&amp;nbsp;conn&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;SqlConnection(&lt;span style="COLOR: #848284"&gt;"Data&amp;nbsp;Source=localhost;&amp;nbsp;Integrated&amp;nbsp;Security=SSPI;&amp;nbsp;Initial&amp;nbsp;Catalog=pubs"&lt;/span&gt;);&amp;nbsp;&lt;br&gt;
SqlCommand&amp;nbsp;cmd&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;SqlCommand(&lt;span style="COLOR: #848284"&gt;"SELECT&amp;nbsp;*&amp;nbsp;FROM&amp;nbsp;employees"&lt;/span&gt;,&amp;nbsp;conn);&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;try&lt;/span&gt;&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&amp;nbsp;&lt;br&gt;
conn.Open();&amp;nbsp;&lt;br&gt;
&lt;br&gt;
SqlDataReader&amp;nbsp;reader&amp;nbsp;=&amp;nbsp;cmd.ExecuteReader();&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;while&lt;/span&gt;&amp;nbsp;(reader.Read())&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"First&amp;nbsp;Name:&amp;nbsp;{0},&amp;nbsp;Last&amp;nbsp;Name:&amp;nbsp;{1}"&lt;/span&gt;,&amp;nbsp;reader.GetString(0),&amp;nbsp;reader.GetString(1));&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;br&gt;
reader.Close();&amp;nbsp;&lt;br&gt;
conn.Close();&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;catch&lt;/span&gt;(Exception&amp;nbsp;e)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"Exception&amp;nbsp;Occured&amp;nbsp;--&amp;gt;&amp;gt;&amp;nbsp;{0}"&lt;/span&gt;,e);&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;b&gt;十、从SQL内读数据到XML：&lt;/b&gt; 
&lt;br&gt;
&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Data;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Xml;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Data.SqlClient;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.IO;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;TestWriteXML&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Main()&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
String&amp;nbsp;strFileName=&lt;span style="COLOR: #848284"&gt;"c:/temp/output.xml"&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
SqlConnection&amp;nbsp;conn&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;SqlConnection(&lt;span style="COLOR: #848284"&gt;"server=localhost;uid=sa;pwd=;database=db"&lt;/span&gt;);&amp;nbsp;&lt;br&gt;
&lt;br&gt;
String&amp;nbsp;strSql&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"SELECT&amp;nbsp;FirstName,&amp;nbsp;LastName&amp;nbsp;FROM&amp;nbsp;employees"&lt;/span&gt;;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
SqlDataAdapter&amp;nbsp;adapter&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;SqlDataAdapter();&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
adapter.SelectCommand&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;SqlCommand(strSql,conn);&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;Build&amp;nbsp;the&amp;nbsp;DataSet&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
DataSet&amp;nbsp;ds&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;DataSet();&amp;nbsp;&lt;br&gt;
&lt;br&gt;
adapter.Fill(ds,&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"employees"&lt;/span&gt;);&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;Get&amp;nbsp;a&amp;nbsp;FileStream&amp;nbsp;object&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
FileStream&amp;nbsp;fs&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;FileStream(strFileName,FileMode.OpenOrCreate,FileAccess.Write);&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;Apply&amp;nbsp;the&amp;nbsp;WriteXml&amp;nbsp;method&amp;nbsp;to&amp;nbsp;write&amp;nbsp;an&amp;nbsp;XML&amp;nbsp;document&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
ds.WriteXml(fs);&amp;nbsp;&lt;br&gt;
&lt;br&gt;
fs.Close();&amp;nbsp;&lt;br&gt;
&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;b&gt;十一、用ADO添加数据到数据库中：&lt;/b&gt; 
&lt;br&gt;
&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Data;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Data.OleDb;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;TestADO&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Main(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;[]&amp;nbsp;args)&amp;nbsp;&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;strDSN&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=c:\test.mdb"&lt;/span&gt;;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;strSQL&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"INSERT&amp;nbsp;INTO&amp;nbsp;Employee(FirstName,&amp;nbsp;LastName)&amp;nbsp;valueS('FirstName',&amp;nbsp;'LastName')"&lt;/span&gt;&amp;nbsp;;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;create&amp;nbsp;Objects&amp;nbsp;of&amp;nbsp;ADOConnection&amp;nbsp;and&amp;nbsp;ADOCommand&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
OleDbConnection&amp;nbsp;conn&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;OleDbConnection(strDSN);&amp;nbsp;&amp;nbsp;&lt;br&gt;
OleDbCommand&amp;nbsp;cmd&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;OleDbCommand(&amp;nbsp;strSQL,&amp;nbsp;conn&amp;nbsp;);&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;try&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&amp;nbsp;&lt;br&gt;
conn.Open();&amp;nbsp;&amp;nbsp;&lt;br&gt;
cmd.ExecuteNonQuery();&amp;nbsp;&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;catch&lt;/span&gt;&amp;nbsp;(Exception&amp;nbsp;e)&amp;nbsp;&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&amp;nbsp;&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"Oooops.&amp;nbsp;I&amp;nbsp;did&amp;nbsp;it&amp;nbsp;again:\n{0}"&lt;/span&gt;,&amp;nbsp;e.Message);&amp;nbsp;&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;finally&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&amp;nbsp;&lt;br&gt;
conn.Close();&amp;nbsp;&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&amp;nbsp;&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;&amp;nbsp; 
&lt;br&gt;
&lt;b&gt;十二、使用OLEConn连接数据库：&lt;/b&gt; 
&lt;br&gt;
&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Data;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Data.OleDb;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;TestADO&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Main(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;[]&amp;nbsp;args)&amp;nbsp;&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;strDSN&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=c:\test.mdb"&lt;/span&gt;;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;strSQL&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"SELECT&amp;nbsp;*&amp;nbsp;FROM&amp;nbsp;employee"&lt;/span&gt;&amp;nbsp;;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
OleDbConnection&amp;nbsp;conn&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;OleDbConnection(strDSN);&amp;nbsp;&lt;br&gt;
OleDbDataAdapter&amp;nbsp;cmd&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;OleDbDataAdapter(&amp;nbsp;strSQL,&amp;nbsp;conn&amp;nbsp;);&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
conn.Open();&amp;nbsp;&lt;br&gt;
DataSet&amp;nbsp;ds&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;DataSet();&amp;nbsp;&lt;br&gt;
cmd.Fill(&amp;nbsp;ds,&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"employee"&lt;/span&gt;&amp;nbsp;);&amp;nbsp;&lt;br&gt;
DataTable&amp;nbsp;dt&amp;nbsp;=&amp;nbsp;ds.Tables[0];&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;foreach&lt;/span&gt;(&amp;nbsp;DataRow&amp;nbsp;dr&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&amp;nbsp;dt.Rows&amp;nbsp;)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"First&amp;nbsp;name:&amp;nbsp;"&lt;/span&gt;+&amp;nbsp;dr[&lt;span style="COLOR: #848284"&gt;"FirstName"&lt;/span&gt;].ToString()&amp;nbsp;+&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"&amp;nbsp;Last&amp;nbsp;name:&amp;nbsp;"&lt;/span&gt;+&amp;nbsp;dr[&lt;span style="COLOR: #848284"&gt;"LastName"&lt;/span&gt;].ToString());&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
conn.Close();&amp;nbsp;&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&amp;nbsp;&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;&amp;nbsp; 
&lt;br&gt;
&lt;b&gt;十三、读取表的属性：&lt;/b&gt; 
&lt;br&gt;
&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Data;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Data.OleDb;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;TestADO&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Main(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;[]&amp;nbsp;args)&amp;nbsp;&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;strDSN&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=c:\test.mdb"&lt;/span&gt;;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;strSQL&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"SELECT&amp;nbsp;*&amp;nbsp;FROM&amp;nbsp;employee"&lt;/span&gt;&amp;nbsp;;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
OleDbConnection&amp;nbsp;conn&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;OleDbConnection(strDSN);&amp;nbsp;&lt;br&gt;
OleDbDataAdapter&amp;nbsp;cmd&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;OleDbDataAdapter(&amp;nbsp;strSQL,&amp;nbsp;conn&amp;nbsp;);&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
conn.Open();&amp;nbsp;&lt;br&gt;
DataSet&amp;nbsp;ds&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;DataSet();&amp;nbsp;&lt;br&gt;
cmd.Fill(&amp;nbsp;ds,&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"employee"&lt;/span&gt;&amp;nbsp;);&amp;nbsp;&lt;br&gt;
DataTable&amp;nbsp;dt&amp;nbsp;=&amp;nbsp;ds.Tables[0];&amp;nbsp;&lt;br&gt;
&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"Field&amp;nbsp;Name&amp;nbsp;DataType&amp;nbsp;Unique&amp;nbsp;AutoIncrement&amp;nbsp;AllowNull"&lt;/span&gt;);&amp;nbsp;&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"=================================================================="&lt;/span&gt;);&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;foreach&lt;/span&gt;(&amp;nbsp;DataColumn&amp;nbsp;dc&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt;&amp;nbsp;dt.Columns&amp;nbsp;)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
Console.WriteLine(dc.ColumnName+&lt;span style="COLOR: #848284"&gt;"&amp;nbsp;,&amp;nbsp;"&lt;/span&gt;+dc.DataType&amp;nbsp;+&lt;span style="COLOR: #848284"&gt;"&amp;nbsp;,"&lt;/span&gt;+dc.Unique&amp;nbsp;+&lt;span style="COLOR: #848284"&gt;"&amp;nbsp;,"&lt;/span&gt;+dc.AutoIncrement+&lt;span style="COLOR: #848284"&gt;"&amp;nbsp;,"&lt;/span&gt;+dc.AllowDBNull&amp;nbsp;);&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
conn.Close();&amp;nbsp;&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;&lt;b&gt;ASP.NET方面的&lt;/b&gt; 
&lt;br&gt;
&lt;b&gt;十四、一个ASP.NET程序：&lt;/b&gt;&amp;nbsp;&lt;br&gt;
&lt;!--StartFragment --&gt;&lt;pre&gt;&lt;span style="COLOR: rgb(0,0,0); BACKGROUND-COLOR: rgb(255,255,0)"&gt;&amp;lt;%&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0); BACKGROUND-COLOR: rgb(245,245,245)"&gt;@Page
Language&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0); BACKGROUND-COLOR: rgb(245,245,245)"&gt;=&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0); BACKGROUND-COLOR: rgb(245,245,245)"&gt;"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0); BACKGROUND-COLOR: rgb(245,245,245)"&gt;C#&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0); BACKGROUND-COLOR: rgb(245,245,245)"&gt;"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0); BACKGROUND-COLOR: rgb(245,245,245)"&gt; &lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0); BACKGROUND-COLOR: rgb(255,255,0)"&gt;%&amp;gt;&lt;br&gt;
&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;script &lt;/span&gt;&lt;span style="COLOR: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="server"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0); BACKGROUND-COLOR: rgb(245,245,245)"&gt; &lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255); BACKGROUND-COLOR: rgb(245,245,245)"&gt;void&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0); BACKGROUND-COLOR: rgb(245,245,245)"&gt; Button1_Click(Objectsender,
EventArgs e)&lt;br&gt;
{&lt;br&gt;
Label1.Text&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0); BACKGROUND-COLOR: rgb(245,245,245)"&gt;=&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0); BACKGROUND-COLOR: rgb(245,245,245)"&gt;TextBox1.Text;&lt;br&gt;
} 
&lt;br&gt;
&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;script&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt; &lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;html&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt; &lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;head&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt; &lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;head&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt; &lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;body&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt; &lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;form &lt;/span&gt;&lt;span style="COLOR: rgb(255,0,0)"&gt;runat&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="server"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt; &lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;p&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt; &lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;br &lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt; Enteryour
name: 
&lt;br&gt;
&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:TextBox &lt;/span&gt;&lt;span style="COLOR: rgb(255,0,0)"&gt;id&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="TextBox1"&lt;/span&gt;&lt;span style="COLOR: rgb(255,0,0)"&gt; runat&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="server"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:TextBox&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt; &lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;p&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt; &lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;p&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt; 
&lt;br&gt;
&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;b&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:Label &lt;/span&gt;&lt;span style="COLOR: rgb(255,0,0)"&gt;id&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="Label1"&lt;/span&gt;&lt;span style="COLOR: rgb(255,0,0)"&gt; runat&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="server"&lt;/span&gt;&lt;span style="COLOR: rgb(255,0,0)"&gt; Width&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="247px"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:Label&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;b&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt; &lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;p&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt; &lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;p&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt; 
&lt;br&gt;
&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:Button &lt;/span&gt;&lt;span style="COLOR: rgb(255,0,0)"&gt;id&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="Button1"&lt;/span&gt;&lt;span style="COLOR: rgb(255,0,0)"&gt; onclick&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="Button1_Click"&lt;/span&gt;&lt;span style="COLOR: rgb(255,0,0)"&gt; runat&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="server"&lt;/span&gt;&lt;span style="COLOR: rgb(255,0,0)"&gt; Text&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;="Submit"&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;br&gt;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;asp:Button&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;p&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt; &lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;form&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt; &lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;body&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;br&gt;
&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,0)"&gt; &lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: rgb(128,0,0)"&gt;html&lt;/span&gt;&lt;span style="COLOR: rgb(0,0,255)"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;b&gt;WinForm开发：&lt;/b&gt; 
&lt;br&gt;
&lt;b&gt;十五、一个简单的WinForm程序：&lt;/b&gt; 
&lt;br&gt;
&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Drawing;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Collections;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.ComponentModel;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Windows.Forms;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Data;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;SimpleForm&amp;nbsp;:&amp;nbsp;System.Windows.Forms.Form&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt;&amp;nbsp;System.ComponentModel.Container&amp;nbsp;components&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;null&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt;&amp;nbsp;System.Windows.Forms.Button&amp;nbsp;button1;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt;&amp;nbsp;System.Windows.Forms.TextBox&amp;nbsp;textBox1;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;SimpleForm()&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
InitializeComponent();&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;protected&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;override&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Dispose(&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;bool&lt;/span&gt;&amp;nbsp;disposing&amp;nbsp;)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;(&amp;nbsp;disposing&amp;nbsp;)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(components&amp;nbsp;!=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
components.Dispose();&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;base&lt;/span&gt;.Dispose(&amp;nbsp;disposing&amp;nbsp;);&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #6699cc"&gt;
&lt;br&gt;
#region&amp;nbsp;Windows&amp;nbsp;Form&amp;nbsp;Designer&amp;nbsp;generated&amp;nbsp;code&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;InitializeComponent()&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.components&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;System.ComponentModel.Container();&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.Size&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;System.Drawing.Size(300,300);&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.Text&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"Form1"&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.button1&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;System.Windows.Forms.Button();&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.textBox1&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;System.Windows.Forms.TextBox();&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.SuspendLayout();&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;button1&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.button1.Location&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;System.Drawing.Point(8,&amp;nbsp;16);&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.button1.Name&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"button1"&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.button1.Size&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;System.Drawing.Size(80,&amp;nbsp;24);&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.button1.TabIndex&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.button1.Text&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"button1"&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;textBox1&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.textBox1.Location&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;System.Drawing.Point(112,&amp;nbsp;16);&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.textBox1.Name&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"textBox1"&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.textBox1.Size&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;System.Drawing.Size(160,&amp;nbsp;20);&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.textBox1.TabIndex&amp;nbsp;=&amp;nbsp;1;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.textBox1.Text&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"textBox1"&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;Form1&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.AutoScaleBaseSize&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;System.Drawing.Size(5,&amp;nbsp;13);&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.ClientSize&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;System.Drawing.Size(292,&amp;nbsp;273);&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.Controls.AddRange(&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;System.Windows.Forms.Control[]&amp;nbsp;{&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.textBox1,&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.button1});&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.Name&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"Form1"&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.Text&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"Form1"&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.ResumeLayout(&lt;span style="COLOR: #0000ff"&gt;false&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;/span&gt;&lt;span style="COLOR: #6699cc"&gt;#endregion&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
[STAThread]&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Main()&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
Application.Run(&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;SimpleForm());&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&amp;nbsp;&lt;br&gt;
} 
&lt;br&gt;
&lt;br&gt;
&lt;b&gt;十六、运行时显示自己定义的图标：&lt;/b&gt; 
&lt;br&gt;
&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #008200"&gt;//load&amp;nbsp;icon&amp;nbsp;and&amp;nbsp;set&amp;nbsp;to&amp;nbsp;form&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
System.Drawing.Icon&amp;nbsp;ico&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;System.Drawing.Icon(@&lt;span style="COLOR: #848284"&gt;"c:\temp\app.ico"&lt;/span&gt;);&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.Icon&amp;nbsp;=&amp;nbsp;ico;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;&lt;b&gt;十七、添加组件到ListBox中：&lt;/b&gt; 
&lt;br&gt;
&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Form1_Load(&lt;span style="COLOR: #0000ff"&gt;object&lt;/span&gt;&amp;nbsp;sender,&amp;nbsp;System.EventArgs&amp;nbsp;e)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;str&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"First&amp;nbsp;item"&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&amp;nbsp;i&amp;nbsp;=&amp;nbsp;23;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;float&lt;/span&gt;&amp;nbsp;flt&amp;nbsp;=&amp;nbsp;34.98f;&amp;nbsp;&amp;nbsp;&lt;br&gt;
listBox1.Items.Add(str);&amp;nbsp;&lt;br&gt;
listBox1.Items.Add(i.ToString());&amp;nbsp;&lt;br&gt;
listBox1.Items.Add(flt.ToString());&amp;nbsp;&lt;br&gt;
listBox1.Items.Add(&lt;span style="COLOR: #848284"&gt;"Last&amp;nbsp;Item&amp;nbsp;in&amp;nbsp;the&amp;nbsp;List&amp;nbsp;Box"&lt;/span&gt;);&amp;nbsp;&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;&amp;nbsp; 
&lt;br&gt;
&lt;b&gt;网络方面的：&lt;/b&gt; 
&lt;br&gt;
&lt;b&gt;十八、取得IP地址：&lt;/b&gt; 
&lt;br&gt;
&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Net;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;GetIP&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Main()&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
IPHostEntry&amp;nbsp;ipEntry&amp;nbsp;=&amp;nbsp;Dns.GetHostByName&amp;nbsp;(&lt;span style="COLOR: #848284"&gt;"localhost"&lt;/span&gt;);&amp;nbsp;&lt;br&gt;
IPAddress&amp;nbsp;[]&amp;nbsp;IpAddr&amp;nbsp;=&amp;nbsp;ipEntry.AddressList;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;for&lt;/span&gt;&amp;nbsp;(&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;IpAddr.Length;&amp;nbsp;i++)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&amp;nbsp;&lt;br&gt;
Console.WriteLine&amp;nbsp;(&lt;span style="COLOR: #848284"&gt;"IP&amp;nbsp;Address&amp;nbsp;{0}:&amp;nbsp;{1}&amp;nbsp;"&lt;/span&gt;,&amp;nbsp;i,&amp;nbsp;IpAddr.ToString&amp;nbsp;());&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;b&gt;十九、取得机器名称：&lt;/b&gt; 
&lt;br&gt;
&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Net;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;GetIP&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Main()&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
Console.WriteLine&amp;nbsp;(&lt;span style="COLOR: #848284"&gt;"Host&amp;nbsp;name&amp;nbsp;:&amp;nbsp;{0}"&lt;/span&gt;,&amp;nbsp;Dns.GetHostName());&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
}&lt;/span&gt; 
&lt;br&gt;
&lt;br&gt;
&lt;b&gt;二十、发送邮件：&lt;/b&gt; 
&lt;br&gt;
&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Web;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Web.Mail;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;TestSendMail&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Main()&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;try&lt;/span&gt;&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;Construct&amp;nbsp;a&amp;nbsp;new&amp;nbsp;mail&amp;nbsp;message&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
MailMessage&amp;nbsp;message&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;MailMessage();&amp;nbsp;&lt;br&gt;
message.From&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"from@domain.com"&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
message.To&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"pengyun@cobainsoft.com"&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
message.Cc&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;""&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
message.Bcc&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;""&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
message.Subject&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"Subject"&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
message.Body&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"Content&amp;nbsp;of&amp;nbsp;message"&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//if&amp;nbsp;you&amp;nbsp;want&amp;nbsp;attach&amp;nbsp;file&amp;nbsp;with&amp;nbsp;this&amp;nbsp;mail,&amp;nbsp;add&amp;nbsp;the&amp;nbsp;line&amp;nbsp;below&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
message.Attachments.Add(&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;MailAttachment(&lt;span style="COLOR: #848284"&gt;"c:\\attach.txt"&lt;/span&gt;,&amp;nbsp;MailEncoding.Base64));&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;Send&amp;nbsp;the&amp;nbsp;message&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
SmtpMail.Send(message);&amp;nbsp;&amp;nbsp;&lt;br&gt;
System.Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"Message&amp;nbsp;has&amp;nbsp;been&amp;nbsp;sent"&lt;/span&gt;);&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;catch&lt;/span&gt;(Exception&amp;nbsp;ex)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
System.Console.WriteLine(ex.Message.ToString());&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;b&gt;二十一、根据IP地址得出机器名称：&lt;/b&gt; 
&lt;br&gt;
&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Net;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;ResolveIP&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Main()&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
IPHostEntry&amp;nbsp;ipEntry&amp;nbsp;=&amp;nbsp;Dns.Resolve(&lt;span style="COLOR: #848284"&gt;"172.29.9.9"&lt;/span&gt;);&amp;nbsp;&lt;br&gt;
Console.WriteLine&amp;nbsp;(&lt;span style="COLOR: #848284"&gt;"Host&amp;nbsp;name&amp;nbsp;:&amp;nbsp;{0}"&lt;/span&gt;,&amp;nbsp;ipEntry.HostName);&amp;nbsp;&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;b&gt;GDI+方面的：&lt;/b&gt; 
&lt;br&gt;
&lt;b&gt;二十二、GDI+入门介绍：&lt;/b&gt; 
&lt;br&gt;
&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Drawing;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Collections;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.ComponentModel;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Windows.Forms;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Data;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;Form1&amp;nbsp;:&amp;nbsp;System.Windows.Forms.Form&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt;&amp;nbsp;System.ComponentModel.Container&amp;nbsp;components&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;null&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;Form1()&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
InitializeComponent();&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;protected&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;override&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Dispose(&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;bool&lt;/span&gt;&amp;nbsp;disposing&amp;nbsp;)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;(&amp;nbsp;disposing&amp;nbsp;)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;&amp;nbsp;(components&amp;nbsp;!=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;null&lt;/span&gt;)&amp;nbsp;&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
components.Dispose();&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;base&lt;/span&gt;.Dispose(&amp;nbsp;disposing&amp;nbsp;);&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #6699cc"&gt;
&lt;br&gt;
#region&amp;nbsp;Windows&amp;nbsp;Form&amp;nbsp;Designer&amp;nbsp;generated&amp;nbsp;code&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;InitializeComponent()&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.AutoScaleBaseSize&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;System.Drawing.Size(5,&amp;nbsp;13);&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.ClientSize&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;System.Drawing.Size(292,&amp;nbsp;273);&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.Name&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"Form1"&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.Text&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"Form1"&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.Paint&amp;nbsp;+=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;System.Windows.Forms.PaintEventHandler(&lt;span style="COLOR: #0000ff"&gt;this&lt;/span&gt;.Form1_Paint);&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;/span&gt;&lt;span style="COLOR: #6699cc"&gt;#endregion&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
[STAThread]&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Main()&amp;nbsp;&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
Application.Run(&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;Form1());&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Form1_Paint(&lt;span style="COLOR: #0000ff"&gt;object&lt;/span&gt;&amp;nbsp;sender,&amp;nbsp;System.Windows.Forms.PaintEventArgs&amp;nbsp;e)&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
Graphics&amp;nbsp;g=e.Graphics;&amp;nbsp;&lt;br&gt;
g.DrawLine(&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;Pen(Color.Blue),10,10,210,110);&amp;nbsp;&lt;br&gt;
g.DrawRectangle(&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;Pen(Color.Red),10,10,200,100);&amp;nbsp;&lt;br&gt;
g.DrawEllipse(&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;Pen(Color.Yellow),10,150,200,100);&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
&lt;b&gt;XML方面的：&lt;/b&gt; 
&lt;br&gt;
&lt;b&gt;二十三、读取XML文件：&lt;/b&gt; 
&lt;br&gt;
&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Xml;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;TestReadXML&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&amp;nbsp;Main()&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;br&gt;
XmlTextReader&amp;nbsp;reader&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;XmlTextReader(&lt;span style="COLOR: #848284"&gt;"C:\\test.xml"&lt;/span&gt;);&amp;nbsp;&lt;br&gt;
reader.Read();&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;while&lt;/span&gt;&amp;nbsp;(reader.Read())&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&amp;nbsp;&lt;br&gt;
reader.MoveToElement();&amp;nbsp;&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"XmlTextReader&amp;nbsp;Properties&amp;nbsp;Test"&lt;/span&gt;);&amp;nbsp;&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"==================="&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;Read&amp;nbsp;this&amp;nbsp;properties&amp;nbsp;of&amp;nbsp;element&amp;nbsp;and&amp;nbsp;display&amp;nbsp;them&amp;nbsp;on&amp;nbsp;console&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"Name:"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;reader.Name);&amp;nbsp;&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"Base&amp;nbsp;URI:"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;reader.BaseURI);&amp;nbsp;&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"Local&amp;nbsp;Name:"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;reader.LocalName);&amp;nbsp;&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"Attribute&amp;nbsp;Count:"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;reader.AttributeCount.ToString());&amp;nbsp;&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"Depth:"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;reader.Depth.ToString());&amp;nbsp;&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"Line&amp;nbsp;Number:"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;reader.LineNumber.ToString());&amp;nbsp;&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"Node&amp;nbsp;Type:"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;reader.NodeType.ToString());&amp;nbsp;&lt;br&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"Attribute&amp;nbsp;Count:"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;reader.value.ToString());&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
&lt;b&gt;二十四、写XML文件：&lt;/b&gt; 
&lt;br&gt;
&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Xml;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;TestWriteXMLFile&amp;nbsp;&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&amp;nbsp;Main(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;[]&amp;nbsp;args)&amp;nbsp;&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;try&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;Creates&amp;nbsp;an&amp;nbsp;XML&amp;nbsp;file&amp;nbsp;is&amp;nbsp;not&amp;nbsp;exist&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
XmlTextWriter&amp;nbsp;writer&amp;nbsp;=&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&amp;nbsp;XmlTextWriter(&lt;span style="COLOR: #848284"&gt;"C:\\temp\\xmltest.xml"&lt;/span&gt;,&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;null&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;Starts&amp;nbsp;a&amp;nbsp;new&amp;nbsp;document&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
writer.WriteStartDocument();&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//Write&amp;nbsp;comments&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
writer.WriteComment(&lt;span style="COLOR: #848284"&gt;"Commentss:&amp;nbsp;XmlWriter&amp;nbsp;Test&amp;nbsp;Program"&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&lt;br&gt;
writer.WriteProcessingInstruction(&lt;span style="COLOR: #848284"&gt;"Instruction"&lt;/span&gt;,&lt;span style="COLOR: #848284"&gt;"Person&amp;nbsp;Record"&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;Add&amp;nbsp;elements&amp;nbsp;to&amp;nbsp;the&amp;nbsp;file&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
writer.WriteStartElement(&lt;span style="COLOR: #848284"&gt;"p"&lt;/span&gt;,&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"person"&lt;/span&gt;,&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"urn:person"&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&lt;br&gt;
writer.WriteStartElement(&lt;span style="COLOR: #848284"&gt;"LastName"&lt;/span&gt;,&lt;span style="COLOR: #848284"&gt;""&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&lt;br&gt;
writer.WriteString(&lt;span style="COLOR: #848284"&gt;"Chand"&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&lt;br&gt;
writer.WriteEndElement();&amp;nbsp;&amp;nbsp;&lt;br&gt;
writer.WriteStartElement(&lt;span style="COLOR: #848284"&gt;"FirstName"&lt;/span&gt;,&lt;span style="COLOR: #848284"&gt;""&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&lt;br&gt;
writer.WriteString(&lt;span style="COLOR: #848284"&gt;"Mahesh"&lt;/span&gt;);&amp;nbsp;&amp;nbsp;&lt;br&gt;
writer.WriteEndElement();&amp;nbsp;&amp;nbsp;&lt;br&gt;
writer.WriteElementInt16(&lt;span style="COLOR: #848284"&gt;"age"&lt;/span&gt;,&lt;span style="COLOR: #848284"&gt;""&lt;/span&gt;,&amp;nbsp;25);&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #008200"&gt;//&amp;nbsp;Ends&amp;nbsp;the&amp;nbsp;document&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;/span&gt;
&lt;br&gt;
writer.WriteEndDocument();&amp;nbsp;&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;catch&lt;/span&gt;&amp;nbsp;(Exception&amp;nbsp;e)&amp;nbsp;&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&amp;nbsp;&lt;br&gt;
Console.WriteLine&amp;nbsp;(&lt;span style="COLOR: #848284"&gt;"Exception:&amp;nbsp;{0}"&lt;/span&gt;,&amp;nbsp;e.ToString());&amp;nbsp;&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&amp;nbsp;0;&amp;nbsp;&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;&lt;b&gt;Web&amp;nbsp;Service方面的：&lt;/b&gt; 
&lt;br&gt;
&lt;b&gt;二十五、一个Web&amp;nbsp;Service的小例子：&lt;/b&gt;&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #000000"&gt;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt;&amp;nbsp;System.Web.Services;&amp;nbsp;&lt;br&gt;
&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&amp;nbsp;TestWS&amp;nbsp;:&amp;nbsp;System.Web.Services.WebService&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
[WebMethod()]&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;&amp;nbsp;StringFromWebService()&amp;nbsp;&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&lt;span style="COLOR: #0000ff"&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style="COLOR: #848284"&gt;"This&amp;nbsp;is&amp;nbsp;a&amp;nbsp;string&amp;nbsp;from&amp;nbsp;web&amp;nbsp;service."&lt;/span&gt;;&amp;nbsp;&lt;br&gt;
}&amp;nbsp;&lt;br&gt;
}&lt;/span&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.qihangnet.com"&gt;Qihangnet&lt;/a&gt;. </description>
      <comments>http://www.qihangnet.com/CommentView,guid,a2755efe-7a5c-450a-92b4-8e0454753371.aspx</comments>
      <category>CSharp</category>
    </item>
    <item>
      <trackback:ping>http://www.qihangnet.com/Trackback.aspx?guid=8f8c6428-9f29-407f-928f-33e71ad271a7</trackback:ping>
      <pingback:server>http://www.qihangnet.com/pingback.aspx</pingback:server>
      <pingback:target>http://www.qihangnet.com/PermaLink,guid,8f8c6428-9f29-407f-928f-33e71ad271a7.aspx</pingback:target>
      <dc:creator>衣明志</dc:creator>
      <wfw:comment>http://www.qihangnet.com/CommentView,guid,8f8c6428-9f29-407f-928f-33e71ad271a7.aspx</wfw:comment>
      <wfw:commentRss>http://www.qihangnet.com/SyndicationService.asmx/GetEntryCommentsRss?guid=8f8c6428-9f29-407f-928f-33e71ad271a7</wfw:commentRss>
      <title>一个简单的C#程序（Console）</title>
      <guid isPermaLink="false">http://www.qihangnet.com/PermaLink,guid,8f8c6428-9f29-407f-928f-33e71ad271a7.aspx</guid>
      <link>http://www.qihangnet.com/PermaLink,guid,8f8c6428-9f29-407f-928f-33e71ad271a7.aspx</link>
      <pubDate>Wed, 23 Mar 2005 08:30:53 GMT</pubDate>
      <description>&lt;div class="blogbody"&gt;刚学C#写的一个小程序，来列举本地的进程，两种模式： 
&lt;br /&gt;
1.列举出进程的starttime和title。 
&lt;br /&gt;
2.列举出进程的执行文件完全路径。 
&lt;br /&gt;
编译环境：Windows 2003+Microsoft.NET Framework v1.1.4322 
&lt;br /&gt;
附上源码： 
&lt;br /&gt;
&lt;a name="more"&gt;&lt;/a&gt; 
&lt;br /&gt;
&lt;b&gt;程序代码：&lt;/b&gt; 
&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #008200"&gt;//List all processes
on local system(two modes) 
&lt;br /&gt;
&lt;/span&gt; 
&lt;br /&gt;
&lt;span style="COLOR: #008200"&gt;//Kill the specified process 
&lt;br /&gt;
&lt;/span&gt; 
&lt;br /&gt;
&lt;span style="COLOR: #008200"&gt;//By sfzhi at 24/Sep/2004 &lt;/span&gt;&lt;/span&gt;&lt;/i&gt; 
&lt;br /&gt;
&lt;span style="COLOR: #000000"&gt;&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt; System; 
&lt;br /&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt; System.Diagnostics; 
&lt;br /&gt;
&lt;span style="COLOR: #0000ff"&gt;using&lt;/span&gt; System.Management; 
&lt;br /&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt; PK 
&lt;br /&gt;
{ 
&lt;br /&gt;
&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt; Main(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt;[]
args) 
&lt;br /&gt;
{ 
&lt;br /&gt;
&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;(args.Length != 1) 
&lt;br /&gt;
{ 
&lt;br /&gt;
help(); 
&lt;br /&gt;
} 
&lt;br /&gt;
&lt;span style="COLOR: #0000ff"&gt;else&lt;/span&gt; 
&lt;br /&gt;
{ 
&lt;br /&gt;
&lt;span style="COLOR: #0000ff"&gt;switch&lt;/span&gt;(args[0]) 
&lt;br /&gt;
{ 
&lt;br /&gt;
&lt;span style="COLOR: #0000ff"&gt;case&lt;/span&gt; &lt;span style="COLOR: #848284"&gt;"/t"&lt;/span&gt;: 
&lt;br /&gt;
psst(); 
&lt;br /&gt;
&lt;span style="COLOR: #0000ff"&gt;break&lt;/span&gt;; 
&lt;br /&gt;
&lt;span style="COLOR: #0000ff"&gt;case&lt;/span&gt; &lt;span style="COLOR: #848284"&gt;"/p"&lt;/span&gt;: 
&lt;br /&gt;
psph(); 
&lt;br /&gt;
&lt;span style="COLOR: #0000ff"&gt;break&lt;/span&gt;; 
&lt;br /&gt;
&lt;span style="COLOR: #0000ff"&gt;default&lt;/span&gt;: 
&lt;br /&gt;
kill(args[0]); 
&lt;br /&gt;
&lt;span style="COLOR: #0000ff"&gt;break&lt;/span&gt;; 
&lt;br /&gt;
} 
&lt;br /&gt;
} 
&lt;br /&gt;
} 
&lt;br /&gt;
&lt;span style="COLOR: #008200"&gt;//Show the Usage 
&lt;br /&gt;
&lt;/span&gt; 
&lt;br /&gt;
&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt; help() 
&lt;br /&gt;
{ 
&lt;br /&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"Local System Process Lister and Killer
V1.0 (2004-9-25 C#) "&lt;/span&gt;); 
&lt;br /&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"Code by sfzhi msn:idazhi@hotmail.com"&lt;/span&gt;); 
&lt;br /&gt;
Console.WriteLine(); 
&lt;br /&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"Usage: pk "&lt;/span&gt;); 
&lt;br /&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"Options: /t - Show the starttime and
title of all processes"&lt;/span&gt;); 
&lt;br /&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;" /p - Show the path to executable
file of all processes"&lt;/span&gt;); 
&lt;br /&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;" PID/Name - Kill the specified process"&lt;/span&gt;); 
&lt;br /&gt;
} 
&lt;br /&gt;
&lt;span style="COLOR: #008200"&gt;//Show the starttime and title of all processes 
&lt;br /&gt;
&lt;/span&gt; 
&lt;br /&gt;
&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt; psst() 
&lt;br /&gt;
{ 
&lt;br /&gt;
Process[] procList = Process.GetProcesses(); 
&lt;br /&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"{0,-6}{1,-12}{2,-22}{3}"&lt;/span&gt;,&lt;span style="COLOR: #848284"&gt;"PID"&lt;/span&gt;,&lt;span style="COLOR: #848284"&gt;"Process"&lt;/span&gt;,&lt;span style="COLOR: #848284"&gt;"StartTime"&lt;/span&gt;,&lt;span style="COLOR: #848284"&gt;"Title"&lt;/span&gt;); 
&lt;br /&gt;
&lt;span style="COLOR: #0000ff"&gt;for&lt;/span&gt; (&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt;&lt;procList.Length-1;i++)         &lt;br/&gt; i=0;i
{ 
&lt;br /&gt;
&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt; strProcName = procList[i].ProcessName; 
&lt;br /&gt;
&lt;span style="COLOR: #0000ff"&gt;int&lt;/span&gt; iProcID = procList[i].Id; 
&lt;br /&gt;
DateTime dProcStTime = procList[i].StartTime; 
&lt;br /&gt;
&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt; strProcTitle = procList[i].MainWindowTitle; 
&lt;br /&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"{0,-6}{1,-12}{2,-22}{3}"&lt;/span&gt;,iProcID,strProcName,dProcStTime,strProcTitle); 
&lt;br /&gt;
} 
&lt;br /&gt;
} 
&lt;br /&gt;
&lt;span style="COLOR: #008200"&gt;//Show the path to executable file of all processes 
&lt;br /&gt;
&lt;/span&gt; 
&lt;br /&gt;
&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt; psph() 
&lt;br /&gt;
{ 
&lt;br /&gt;
Process[] p = Process.GetProcesses(); 
&lt;br /&gt;
ManagementObjectSearcher searcher; 
&lt;br /&gt;
ManagementObjectCollection collection; 
&lt;br /&gt;
searcher = &lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt; ManagementObjectSearcher(&lt;span style="COLOR: #848284"&gt;"SELECT
* FROM Win32_Process"&lt;/span&gt;); 
&lt;br /&gt;
collection = searcher.Get(); 
&lt;br /&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"{0,-5}{1,-16}{2}"&lt;/span&gt;,&lt;span style="COLOR: #848284"&gt;"PID"&lt;/span&gt;,&lt;span style="COLOR: #848284"&gt;"ProcName"&lt;/span&gt;,&lt;span style="COLOR: #848284"&gt;"ProcessPath"&lt;/span&gt;); 
&lt;br /&gt;
&lt;span style="COLOR: #0000ff"&gt;foreach&lt;/span&gt; (ManagementObject service &lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt; collection) 
&lt;br /&gt;
{ 
&lt;br /&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"{0,-5}{1,-16}{2}"&lt;/span&gt;,service[&lt;span style="COLOR: #848284"&gt;"ProcessID"&lt;/span&gt;],service[&lt;span style="COLOR: #848284"&gt;"Name"&lt;/span&gt;],service[&lt;span style="COLOR: #848284"&gt;"ExecutablePath"&lt;/span&gt;]); 
&lt;br /&gt;
} 
&lt;br /&gt;
} 
&lt;br /&gt;
&lt;span style="COLOR: #008200"&gt;//Terminate the specified process 
&lt;br /&gt;
&lt;/span&gt; 
&lt;br /&gt;
&lt;span style="COLOR: #0000ff"&gt;private&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;static&lt;/span&gt; &lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt; kill(&lt;span style="COLOR: #0000ff"&gt;string&lt;/span&gt; idname) 
&lt;br /&gt;
{ 
&lt;br /&gt;
Process[] all = Process.GetProcesses(); 
&lt;br /&gt;
&lt;span style="COLOR: #0000ff"&gt;foreach&lt;/span&gt;(Process p &lt;span style="COLOR: #0000ff"&gt;in&lt;/span&gt; all) 
&lt;br /&gt;
{ 
&lt;br /&gt;
&lt;span style="COLOR: #0000ff"&gt;if&lt;/span&gt;(p.Id.ToString() == idname || p.ProcessName
== idname) 
&lt;br /&gt;
{ 
&lt;br /&gt;
p.Kill(); 
&lt;br /&gt;
p.Close(); 
&lt;br /&gt;
Console.WriteLine(&lt;span style="COLOR: #848284"&gt;"Process {0} was terminated successfully"&lt;/span&gt;,idname); 
&lt;br /&gt;
} 
&lt;br /&gt;
} 
&lt;br /&gt;
} 
&lt;br /&gt;
} &lt;/span&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;hr /&gt;
This weblog is sponsored by &lt;a href="http://www.qihangnet.com"&gt;Qihangnet&lt;/a&gt;. </description>
      <comments>http://www.qihangnet.com/CommentView,guid,8f8c6428-9f29-407f-928f-33e71ad271a7.aspx</comments>
      <category>CSharp</category>
    </item>
  </channel>
</rss>