﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" 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/"><channel><title>博客园-老猫的理想</title><link>http://www.cnblogs.com/mikecat888/</link><description>琳婕小筑</description><language>zh-cn</language><lastBuildDate>Mon, 06 Oct 2008 21:56:07 GMT</lastBuildDate><pubDate>Mon, 06 Oct 2008 21:56:07 GMT</pubDate><ttl>60</ttl><item><title>用C#写ExtJS代码的开源工具extsharp</title><link>http://www.cnblogs.com/mikecat888/archive/2008/01/09/1032576.html</link><dc:creator>迈克老猫</dc:creator><author>迈克老猫</author><pubDate>Wed, 09 Jan 2008 14:03:00 GMT</pubDate><guid>http://www.cnblogs.com/mikecat888/archive/2008/01/09/1032576.html</guid><wfw:comment>http://www.cnblogs.com/mikecat888/comments/1032576.html</wfw:comment><comments>http://www.cnblogs.com/mikecat888/archive/2008/01/09/1032576.html#Feedback</comments><slash:comments>13</slash:comments><wfw:commentRss>http://www.cnblogs.com/mikecat888/comments/commentRss/1032576.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/mikecat888/services/trackbacks/1032576.html</trackback:ping><description><![CDATA[<p>extsharp是在<a href="http://code.google.com/p/extsharp/">code.google.com</a>上发布的一个用C#写ExtJS代码的开源工具</p>
<p>官方网站：<a href="http://code.google.com/p/extsharp/">http://code.google.com/p/extsharp/</a></p>
<p><br />
以下是官方网站译文，水平有限，敬请广大网友斧正（更多开源项目请访问<font face="Verdana"><a href="http://www.mikecat.net/space/?uid=3">http://www.mikecat.net/space/?uid=3</a></font>）：</p>
<p><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我真的非常喜欢EXT，但是用JavaScript编码却又让我寒心。因此我到处寻找，并找到了一种方法，同时使用我最喜爱的js库（EXT）和我最喜爱的编程语言（C#）来进行编码。利用一个我称之为Script#的项目，使我能用C#代码编程并自动转换成JavaScript，这就类似于GWT(google)。通过Script#你能依靠扩展API创建你需要的类型、方法、属性等一切。<br />
所以我所做的就是写一个小控制台程序去解析所有ExtJS源文件，并提取脚本注释并且写C#文件为每个类。最终达到的效果就是有一个可编程的C# API去访问所有EXT 对象 并且</p>
<p>&nbsp;</p>
<p><strong>这个是个google官方的演示示例</strong><br />
基于ExtJS v1.1.1和Northwind 数据库开发<br />
<strong>演示地址</strong>：<a href="http://ext.ordereze.net/scriptsharp/products.aspx">http://ext.ordereze.net/scriptsharp/products.aspx</a></p>
<p>&nbsp;</p>
<p><strong><font color="royalblue" size="6">下载:</font></strong><br />
</p>
<a style="margin: 6px 0pt 0pt 3em; background: transparent url(/hosting/images/dl_arrow.gif) no-repeat scroll left top; display: block; padding-left: 18px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" href="http://extsharp.googlecode.com/files/ExtJS2Parser-v2.0.1.zip">
</a>
<p>
<table class="results" id="resultstable" border="0" cellpadding="2" cellspacing="0" width="100%">
    <tbody>
        <tr id="headingrow">
            <th>&nbsp; </th>
            <th class="col_0" nclick="_showBelow('pop_0',this)" nowrap="nowrap"><a style="text-decoration: none;" href="http://code.google.com/p/extsharp/downloads/list#"><font color="#0000ff">Filename</font></a></th>
            <th class="col_1" id="summaryheading" nclick="_showBelow('pop_1',this)" nowrap="nowrap" width="100%"><a style="text-decoration: none;" href="http://code.google.com/p/extsharp/downloads/list#"><font color="#0000ff">Summary + Labels</font></a></th>
            <th class="col_2" nclick="_showBelow('pop_2',this)" nowrap="nowrap"><a style="text-decoration: none;" href="http://code.google.com/p/extsharp/downloads/list#"><font color="#0000ff">Uploaded</font></a></th>
            <th class="col_3" nclick="_showBelow('pop_3',this)" nowrap="nowrap"><a style="text-decoration: none;" href="http://code.google.com/p/extsharp/downloads/list#"><font color="#0000ff">Size</font></a></th>
            <th class="col_4" nclick="_showBelow('pop_4',this)" nowrap="nowrap"><a style="text-decoration: none;" href="http://code.google.com/p/extsharp/downloads/list#"><font color="#0000ff">DownloadCount</font></a></th>
            <th style="width: 3ex;" nclick="return _showBelow('pop__dot',this)"><a style="background: transparent none repeat scroll 0% 50%; padding-right: 0pt; margin-right: 0pt; text-decoration: none; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" href="http://code.google.com/p/extsharp/downloads/list#columnprefs"><font color="#0000ff">...</font></a></th>
        </tr>
        <tr class="" nmouseover="_rowRolloverOn(this)" nmouseout="_rowRolloverOff(this); cancelBubble=false">
            <td class="vt" style="padding: 2px 2px 0pt;" nowrap="nowrap"><font color="#0000ff"></font><br />
            </td>
            <td class="vt id col_0"><a style="white-space: nowrap;" href="http://extsharp.googlecode.com/files/ExtJS2Samples-v2.0.1.zip"><font color="#0000ff">ExtJS2Samples-v2.0.1.zip</font></a> </td>
            <td class="vt col_1" nclick="if (!cancelBubble) _go('detail?name=ExtJS2Samples-v2.0.1.zip&amp;can=2&amp;q=')" width="100%"><a href="http://code.google.com/p/extsharp/downloads/detail?name=ExtJS2Samples-v2.0.1.zip&amp;can=2&amp;q=" nclick="cancelBubble=true;"><font color="#0000ff">ExtSharp Web Samples v2.0.1</font></a> &nbsp; <a class="label" href="http://code.google.com/p/extsharp/downloads/list?q=label:Featured" nclick="cancelBubble=true;"><font color="#0000ff">Featured</font></a> </td>
            <td class="vt col_2" nclick="if (!cancelBubble) _go('detail?name=ExtJS2Samples-v2.0.1.zip&amp;can=2&amp;q=')"><a style="white-space: nowrap;" href="http://code.google.com/p/extsharp/downloads/detail?name=ExtJS2Samples-v2.0.1.zip&amp;can=2&amp;q=" nclick="cancelBubble=true;"><font color="#0000ff">Dec 12</font></a></td>
            <td class="vt col_3" nclick="if (!cancelBubble) _go('detail?name=ExtJS2Samples-v2.0.1.zip&amp;can=2&amp;q=')"><a style="white-space: nowrap;" href="http://code.google.com/p/extsharp/downloads/detail?name=ExtJS2Samples-v2.0.1.zip&amp;can=2&amp;q=" nclick="cancelBubble=true;"><font color="#0000ff">1.8 MB</font></a></td>
            <td class="vt col_4" nclick="if (!cancelBubble) _go('detail?name=ExtJS2Samples-v2.0.1.zip&amp;can=2&amp;q=')"><a style="white-space: nowrap;" href="http://code.google.com/p/extsharp/downloads/detail?name=ExtJS2Samples-v2.0.1.zip&amp;can=2&amp;q=" nclick="cancelBubble=true;"><font color="#0000ff">18749</font></a></td>
            <td>&nbsp;</td>
        </tr>
        <tr class="" nmouseover="_rowRolloverOn(this)" nmouseout="_rowRolloverOff(this); cancelBubble=false">
            <td class="vt" style="padding: 2px 2px 0pt;" nowrap="nowrap"><br />
            </td>
            <td class="vt id col_0"><a style="white-space: nowrap;" href="http://extsharp.googlecode.com/files/ExtJS2Parser-v2.0.1.zip"><font color="#0000ff">ExtJS2Parser-v2.0.1.zip</font></a> </td>
            <td class="vt col_1" nclick="if (!cancelBubble) _go('detail?name=ExtJS2Parser-v2.0.1.zip&amp;can=2&amp;q=')" width="100%"><a href="http://code.google.com/p/extsharp/downloads/detail?name=ExtJS2Parser-v2.0.1.zip&amp;can=2&amp;q=" nclick="cancelBubble=true;"><font color="#0000ff">ExtSharp API Source &amp; Parser v2.0.1</font></a> &nbsp; <a class="label" href="http://code.google.com/p/extsharp/downloads/list?q=label:Featured" nclick="cancelBubble=true;"><font color="#0000ff">Featured</font></a> </td>
            <td class="vt col_2" nclick="if (!cancelBubble) _go('detail?name=ExtJS2Parser-v2.0.1.zip&amp;can=2&amp;q=')"><a style="white-space: nowrap;" href="http://code.google.com/p/extsharp/downloads/detail?name=ExtJS2Parser-v2.0.1.zip&amp;can=2&amp;q=" nclick="cancelBubble=true;"><font color="#0000ff">Dec 12</font></a></td>
            <td class="vt col_3" nclick="if (!cancelBubble) _go('detail?name=ExtJS2Parser-v2.0.1.zip&amp;can=2&amp;q=')"><a style="white-space: nowrap;" href="http://code.google.com/p/extsharp/downloads/detail?name=ExtJS2Parser-v2.0.1.zip&amp;can=2&amp;q=" nclick="cancelBubble=true;"><font color="#0000ff">2.5 MB</font></a></td>
            <td class="vt col_4" nclick="if (!cancelBubble) _go('detail?name=ExtJS2Parser-v2.0.1.zip&amp;can=2&amp;q=')"><a style="white-space: nowrap;" href="http://code.google.com/p/extsharp/downloads/detail?name=ExtJS2Parser-v2.0.1.zip&amp;can=2&amp;q=" nclick="cancelBubble=true;"><font color="#0000ff">6621</font></a></td>
            <td>&nbsp;</td>
        </tr>
        <tr class="" nmouseover="_rowRolloverOn(this)" nmouseout="_rowRolloverOff(this); cancelBubble=false">
            <td class="vt" style="padding: 2px 2px 0pt;" nowrap="nowrap"><br />
            </td>
            <td class="vt id col_0"><a style="white-space: nowrap;" href="http://extsharp.googlecode.com/files/ScriptSharp-v0.4.2.pdf"><font color="#0000ff">ScriptSharp-v0.4.2.pdf</font></a> </td>
            <td class="vt col_1" nclick="if (!cancelBubble) _go('detail?name=ScriptSharp-v0.4.2.pdf&amp;can=2&amp;q=')" width="100%"><a href="http://code.google.com/p/extsharp/downloads/detail?name=ScriptSharp-v0.4.2.pdf&amp;can=2&amp;q=" nclick="cancelBubble=true;"><font color="#0000ff">Script# v4.2.0 Manual</font></a> </td>
            <td class="vt col_2" nclick="if (!cancelBubble) _go('detail?name=ScriptSharp-v0.4.2.pdf&amp;can=2&amp;q=')"><a style="white-space: nowrap;" href="http://code.google.com/p/extsharp/downloads/detail?name=ScriptSharp-v0.4.2.pdf&amp;can=2&amp;q=" nclick="cancelBubble=true;"><font color="#0000ff">Sep 17</font></a></td>
            <td class="vt col_3" nclick="if (!cancelBubble) _go('detail?name=ScriptSharp-v0.4.2.pdf&amp;can=2&amp;q=')"><a style="white-space: nowrap;" href="http://code.google.com/p/extsharp/downloads/detail?name=ScriptSharp-v0.4.2.pdf&amp;can=2&amp;q=" nclick="cancelBubble=true;"><font color="#0000ff">1.5 MB</font></a></td>
            <td class="vt col_4" nclick="if (!cancelBubble) _go('detail?name=ScriptSharp-v0.4.2.pdf&amp;can=2&amp;q=')"><a style="white-space: nowrap;" href="http://code.google.com/p/extsharp/downloads/detail?name=ScriptSharp-v0.4.2.pdf&amp;can=2&amp;q=" nclick="cancelBubble=true;"><font color="#0000ff">12710</font></a></td>
            <td>&nbsp;</td>
        </tr>
        <tr class="" nmouseover="_rowRolloverOn(this)" nmouseout="_rowRolloverOff(this); cancelBubble=false">
            <td class="vt" style="padding: 2px 2px 0pt;" nowrap="nowrap"><br />
            </td>
            <td class="vt id col_0"><a style="white-space: nowrap;" href="http://extsharp.googlecode.com/files/ScriptSharp-v0.4.2.msi"><font color="#0000ff">ScriptSharp-v0.4.2.msi</font></a> </td>
            <td class="vt col_1" nclick="if (!cancelBubble) _go('detail?name=ScriptSharp-v0.4.2.msi&amp;can=2&amp;q=')" width="100%"><a href="http://code.google.com/p/extsharp/downloads/detail?name=ScriptSharp-v0.4.2.msi&amp;can=2&amp;q=" nclick="cancelBubble=true;"><font color="#0000ff">Script# v4.2.0 Installer</font></a> </td>
            <td class="vt col_2" nclick="if (!cancelBubble) _go('detail?name=ScriptSharp-v0.4.2.msi&amp;can=2&amp;q=')"><a style="white-space: nowrap;" href="http://code.google.com/p/extsharp/downloads/detail?name=ScriptSharp-v0.4.2.msi&amp;can=2&amp;q=" nclick="cancelBubble=true;"><font color="#0000ff">Sep 17</font></a></td>
            <td class="vt col_3" nclick="if (!cancelBubble) _go('detail?name=ScriptSharp-v0.4.2.msi&amp;can=2&amp;q=')"><a style="white-space: nowrap;" href="http://code.google.com/p/extsharp/downloads/detail?name=ScriptSharp-v0.4.2.msi&amp;can=2&amp;q=" nclick="cancelBubble=true;"><font color="#0000ff">1.4 MB</font></a></td>
            <td class="vt col_4" nclick="if (!cancelBubble) _go('detail?name=ScriptSharp-v0.4.2.msi&amp;can=2&amp;q=')"><a style="white-space: nowrap;" href="http://code.google.com/p/extsharp/downloads/detail?name=ScriptSharp-v0.4.2.msi&amp;can=2&amp;q=" nclick="cancelBubble=true;"><font color="#0000ff">11820</font></a></td>
        </tr>
    </tbody>
</table>
</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong><font size="3">&nbsp;2007年12月5日更新</font></strong></p>
<p>我们已经修改了Ext#用来解析最新释放的ExtJS 2.0，并且我们也在用Ext#来创造更多的例子</p>
<p>下列示例已经开发完成：</p>
<p>&nbsp;</p>
<ul>
    <li>Grids </li>
    <ul>
        <li>Basic Array Grid </li>
        <li>Editable Grid </li>
        <li>XML Grid </li>
        <li>Paging Grid </li>
        <li>Grouping Grid </li>
    </ul>
    <li>Toolbars and Menus </li>
    <ul>
        <li>Basic Toolbar </li>
        <li>Ext Actions </li>
    </ul>
    <li>Miscellaneous </li>
    <ul>
        <li>Data View (partial) </li>
        <li>Progress Bar </li>
        <li>Templates </li>
        <li>Panels </li>
        <li>Resizable </li>
    </ul>
</ul>
<p>A big thanks to consultutah for all of his help creating these samples. As well as to all of the Ext community for their help and suggestions. </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>Intellisense</strong> </p>
<p><img src="http://ext.ordereze.net/scriptsharp/ext_intellisense.png" alt="" /> </p>
<p><strong>Method Signatures with param info</strong> </p>
<p><img src="http://ext.ordereze.net/scriptsharp/ext_method_sig.png" alt="" /> </p>
<p><strong>Method Overloads for varying params</strong> </p>
<p><img src="http://ext.ordereze.net/scriptsharp/ext_type_overloads.png" alt="" /> </p>
<p><strong>Compile-time error checking</strong> </p>
<p><img src="http://ext.ordereze.net/scriptsharp/ext_compile_time_errors.png" alt="" /> </p>
<p><strong>Events list with usage info</strong> </p>
<p><img src="http://ext.ordereze.net/scriptsharp/ext_event_list.png" alt="" /> </p>
<p><strong>Delegates for all events</strong> </p>
<p><img src="http://ext.ordereze.net/scriptsharp/ext_anon_delegates.png" alt="" /> </p>
<p><strong>Intellisense for config options</strong> </p>
<p><img src="http://ext.ordereze.net/scriptsharp/ext_config_intellisense.png" alt="" /> </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class="pmeta_bubble_bg">
<div class="rounded_ul">
<div class="rounded_ur">
<div class="rounded_ll">
<div class="rounded_lr">
<table class="pmeta." cellpadding="5">
    <tbody>
        <tr>
            <th>License:</th>
            <td><a href="http://www.gnu.org/licenses/lgpl.html" rel="nofollow"><font color="#0000ff">GNU Lesser General Public License</font></a></td>
        </tr>
    </tbody>
</table>
<br />
刚刚看到这个项目，随笔中有什么问题，还请大家多指正，在这里留言或者到我的网站<a title="老猫的理想" href="http://www.mikecat.net" target="_blank">老猫的理想</a>留言</div>
</div>
</div>
</div>
</div>
<img src ="http://www.cnblogs.com/mikecat888/aggbug/1032576.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42809/" target="_blank">[新闻]51.COM技术副总裁邵辉跳槽百度</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>老猫的理想ASP.NET探针V0.20提供下载  </title><link>http://www.cnblogs.com/mikecat888/archive/2004/12/21/80274.html</link><dc:creator>迈克老猫</dc:creator><author>迈克老猫</author><pubDate>Tue, 21 Dec 2004 15:39:00 GMT</pubDate><guid>http://www.cnblogs.com/mikecat888/archive/2004/12/21/80274.html</guid><wfw:comment>http://www.cnblogs.com/mikecat888/comments/80274.html</wfw:comment><comments>http://www.cnblogs.com/mikecat888/archive/2004/12/21/80274.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/mikecat888/comments/commentRss/80274.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/mikecat888/services/trackbacks/80274.html</trackback:ping><description><![CDATA[//******************************************************************************
<br/>//程序名称：老猫的理想ASP.NET探针
<br/>//Version:0.20&#160;
<br/>//作者：迈克老猫
<br/>//版权所有&#160;2004-2005&#160;老猫的理想工作室.
<br/>//主页：<a href="http://www.mikecat.net&#160;&#160;&#160;&#160;email:mikecat/#mikecat.net&#160;&#160;QQ:87029826" target="_blank"><font color="#0000ff">http://www.mikecat.net&#160;&#160;&#160;&#160;Email:mikecat#mikecat.net&#160;&#160;QQ:87029826</font></a>
<br/>//本程序代码完全免费，您可以任意复制，修改和传播。但请保留以上信息谢谢合作。
<br/>//******************************************************************************
<br/>//修改请注明由本程序修改而来，谢谢合作。&#160;&#160;&#160;
<br/>//注意：本程序谢绝用于任何商业领域，修改版本不得以任何名义收费。&#160;
<br/>//虚拟主机商使用本程序请先联系mikecat#mikecat.net。我将提供技术支持并将你的地址加入。&#160;
<br/>//******************************************************************************
<br/>//了解本程序最新版本及工作室其他作品情况，请访问：www.mikecat.net
<br/>//******************************************************************************
<br/>
<br/>新增功能及修改BUG：
<br/>1。&#160;修改对服务器端操作系统对WIN2003识别错误BUG。
<br/>
<br/>2。&#160;新增服务器服务器操作系统安装目录检测
<br/>
<br/>3。&#160;新增服务器应用程序安装目录检测
<br/>
<br/>4。&#160;新增服务器CPU个数检测
<br/>
<br/>5。&#160;新增服务器每个CPU详细信息检测（包括&#160;标识、描述、频率、最高频率、二级缓存大小、速度&#160;CPU等级&#160;OEMID等信息）
<br/>
<br/>6。&#160;新增服务器内存信息检测（包括&#160;物理内存、交换文件大小、可用物理内存、内存使用率、虚拟内存信息）
<br/>
<br/>7。&#160;新增逻辑驱动器个数探测
<br/>
<br/>使用方法：
<br/>
<br/>1。&#160;将压缩包内的bin目录内的MikeCat_SiteInfo.dll文件放到你WEB站点虚拟目录内的bin目录内，如果没有虚拟目录，则将其放到站点根目录内的bin目录中即可。
<br/>
<br/>2。&#160;将SiteInfo.aspx上传到你的站点中，即可使用本程序。
<br/>
<br/>探针演示地址：
<br/><a href="http://www.mikecat.net/mikecatrssblog/siteinfo.aspx" target="_blank"><font color="#800080">http://www.mikecat.net/mikecatrssblog/siteinfo.aspx</font></a>
<br/>探针下载地址：
<br/><a href="http://www.mikecat.net/mikecatrssblog/mikecatsiteinfo.rar" target="_blank"><font color="#0000ff">http://www.mikecat.net/mikecatrssblog/mikecatsiteinfo.rar</font></a>
<br/><img src ="http://www.cnblogs.com/mikecat888/aggbug/80274.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42807/" target="_blank">[新闻]Mono 2.0终于到来</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>老猫的理想ASP.NET投票系统V0.10结构图</title><link>http://www.cnblogs.com/mikecat888/archive/2004/12/20/79773.html</link><dc:creator>迈克老猫</dc:creator><author>迈克老猫</author><pubDate>Mon, 20 Dec 2004 14:38:00 GMT</pubDate><guid>http://www.cnblogs.com/mikecat888/archive/2004/12/20/79773.html</guid><wfw:comment>http://www.cnblogs.com/mikecat888/comments/79773.html</wfw:comment><comments>http://www.cnblogs.com/mikecat888/archive/2004/12/20/79773.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.cnblogs.com/mikecat888/comments/commentRss/79773.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/mikecat888/services/trackbacks/79773.html</trackback:ping><description><![CDATA[<img src="http://blog.csdn.net/Emoticons/hitwall.gif" />这个投票系统本来是想做成<a title="老猫的理想开源范例" href="http://www.mikecat.net/blogview.asp?logID=557" style="COLOR: #0000ff">老猫的理想开源范例</a>里面得一个小例子，可是后来发现还是做成一个独立系统得好。不过现在我想到得功能很有限，希望大家能帮我提出些有建设性得意见。我这里把系统得WEB功能结构图贴出来大家帮我参谋参谋。 
<br/>
<br/><img onmouseover="this.style.cursor=&#39;hand&#39;;" onclick="window.open(this.src);" alt="按此在新窗口打开图片" src="http://www.mikecat.net/mike/mikecatvote.jpg" onload="DrawImage(this);" border="0" style="CURSOR: hand" /><img src ="http://www.cnblogs.com/mikecat888/aggbug/79773.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42808/" target="_blank">[新闻]百度任命李一男担任首席技术官</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>改变文本框、按钮样式函数 </title><link>http://www.cnblogs.com/mikecat888/archive/2004/12/18/78648.html</link><dc:creator>迈克老猫</dc:creator><author>迈克老猫</author><pubDate>Fri, 17 Dec 2004 16:47:00 GMT</pubDate><guid>http://www.cnblogs.com/mikecat888/archive/2004/12/18/78648.html</guid><wfw:comment>http://www.cnblogs.com/mikecat888/comments/78648.html</wfw:comment><comments>http://www.cnblogs.com/mikecat888/archive/2004/12/18/78648.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/mikecat888/comments/commentRss/78648.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/mikecat888/services/trackbacks/78648.html</trackback:ping><description><![CDATA[<p align="left">初始化文本框、按钮的效果函数。
<br/>注释很清楚我就不多说了。
<br/>
<br/>
</p>
<table cellSpacing="0" cellPadding="0" width="90%" align="center" border="0">
   <tbody>
       <tr>
           <td>程序代码：</td>
       </tr>
       <tr>
           <td>
              <table cellSpacing="1" cellPadding="10" width="100%" bgColor="#dfdfdf" border="0">
                  <tbody>
                      <tr>
                            <td class="code" width="100%" bgColor="#ffffff">.btnadd_1
<br/>{
<br/>&#160;&#160;&#160;&#160;font-size:&#160;12px;
<br/>&#160;&#160;&#160;&#160;width:&#160;80px;
<br/>&#160;&#160;&#160;&#160;height:&#160;22px;
<br/>&#160;&#160;&#160;&#160;background-image:&#160;url(Images/Btn/btnadd_1.gif);
<br/>&#160;&#160;&#160;&#160;border:&#160;none;
<br/>&#160;&#160;&#160;&#160;padding-top:&#160;3px;
<br/>&#160;&#160;&#160;&#160;cursor:hand;
<br/>}
<br/>.btnadd_2
<br/>{
<br/>&#160;&#160;&#160;&#160;font-size:&#160;12px;
<br/>&#160;&#160;&#160;&#160;width:&#160;80px;
<br/>&#160;&#160;&#160;&#160;height:&#160;22px;
<br/>&#160;&#160;&#160;&#160;background-image:&#160;url(Images/Btn/btnadd_2.gif);
<br/>&#160;&#160;&#160;&#160;border:&#160;none;
<br/>&#160;&#160;&#160;&#160;padding-top:&#160;3px;
<br/>&#160;&#160;&#160;&#160;cursor:hand;
<br/>}
                            </td>
                      </tr>
                  </tbody>
              </table>
           </td>
       </tr>
   </tbody>
</table>
<br/>
<table cellSpacing="0" cellPadding="0" width="90%" align="center" border="0">
   <tbody>
       <tr>
           <td>程序代码：</td>
       </tr>
       <tr>
           <td>
              <table cellSpacing="1" cellPadding="10" width="100%" bgColor="#dfdfdf" border="0">
                  <tbody>
                      <tr>
                            <td class="code" width="100%" bgColor="#ffffff">
<br/>///&#160;&lt;summary&gt;
<br/>///&#160;控件效果
<br/>///&#160;&lt;/summary&gt;
<br/>///&#160;&lt;param&#160;name=&quot;ctrls&quot;&gt;控件数组,一种类型控件数组，目前只支持Button,TextBox两种类型控件，比如Control&#160;ctrls={btn_Add,Btn_Save}&lt;/param&gt;
<br/>///&#160;&lt;param&#160;name=&quot;Type1&quot;&gt;样式类型1，Button控件，支持鼠标滑过onmouseOver和鼠标滑开两种效果，TextBox控件，支持鼠标获得焦点onFocus和失去焦点两种效果&lt;/param&gt;
<br/>///&#160;&lt;param&#160;name=&quot;Type2&quot;&gt;样式类型2&lt;/param&gt;
<br/>public&#160;void&#160;CtrlAttributes(Control&#160;[]&#160;ctrls,string&#160;Type1,string&#160;Type2)
<br/>{
<br/>&#160;&#160;&#160;&#160;for&#160;(int&#160;i=0;i&lt;ctrls.Length;i++)
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(ctrls[i]&#160;is&#160;TextBox)
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;((TextBox)ctrls[i]).Attributes.Add(&quot;class&quot;,Type1);
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;((TextBox)ctrls[i]).Attributes.Add(&quot;onFocus&quot;,&quot;className=&#39;&quot;+Type2+&quot;&#39;&quot;);
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;((TextBox)ctrls[i]).Attributes.Add(&quot;onBlur&quot;,&quot;className=&#39;&quot;+Type1+&quot;&#39;&quot;);
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(ctrls[i]&#160;is&#160;Button)
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;((Button)ctrls[i]).Attributes.Add(&quot;class&quot;,Type1);
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;((Button)ctrls[i]).Attributes.Add(&quot;onmouseOver&quot;,&quot;className=&#39;&quot;+Type2+&quot;&#39;&quot;);
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;((Button)ctrls[i]).Attributes.Add(&quot;onmouseOut&quot;,&quot;className=&#39;&quot;+Type1+&quot;&#39;&quot;);
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
<br/>&#160;&#160;&#160;&#160;}
<br/>}
                            </td>
                      </tr>
                  </tbody>
              </table>
           </td>
       </tr>
   </tbody>
</table><img src ="http://www.cnblogs.com/mikecat888/aggbug/78648.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42805/" target="_blank">[新闻]Google Knol 开始尝试有声版</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>asp.net中常用的一些小技巧 </title><link>http://www.cnblogs.com/mikecat888/archive/2004/12/18/78646.html</link><dc:creator>迈克老猫</dc:creator><author>迈克老猫</author><pubDate>Fri, 17 Dec 2004 16:44:00 GMT</pubDate><guid>http://www.cnblogs.com/mikecat888/archive/2004/12/18/78646.html</guid><wfw:comment>http://www.cnblogs.com/mikecat888/comments/78646.html</wfw:comment><comments>http://www.cnblogs.com/mikecat888/archive/2004/12/18/78646.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/mikecat888/comments/commentRss/78646.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/mikecat888/services/trackbacks/78646.html</trackback:ping><description><![CDATA[迈克老猫（MikeCat) 
<p align="center">来自：<a href="http://www.mikecat.net/"><font color="#0000ff">老猫の理想</font></a> 
</p>
<p>&#160;&#160; 在这里给大家提供一些平时经常容易用到的效果的解决方案。我把一些效果封装在了一个类库文件中。</p>
<p>&#160; 警告窗口</p>
<p>&#160;&#160;/// &lt;summary&gt; 
<br/>&#160;&#160;/// 服务器端弹出alert对话框 
<br/>&#160;&#160;/// &lt;/summary&gt; 
<br/>&#160;&#160;/// &lt;param name=&quot;str_Message&quot;&gt;提示信息,例子：&quot;不能为空!&quot;&lt;/param&gt; 
<br/>&#160;&#160;/// &lt;param name=&quot;page&quot;&gt;Page类&lt;/param&gt; 
<br/>&#160;&#160;public void Alert(string str_Message,Page page) 
<br/>&#160;&#160;{ 
<br/>&#160;&#160;&#160;page.RegisterStartupScript(&quot;&quot;,&quot;&lt;script&gt;alert(&#39;&quot;+str_Message+&quot;&#39;);&lt;/script&gt;&quot;); 
<br/>&#160;&#160;} 
</p>
<p>&#160; 重载此警告窗口,使某控件获得焦点</p>
<p>&#160;&#160;/// &lt;summary&gt; 
<br/>&#160;&#160;/// 服务器端弹出alert对话框，并使控件获得焦点 
<br/>&#160;&#160;/// &lt;/summary&gt; 
<br/>&#160;&#160;/// &lt;param name=&quot;str_Ctl_Name&quot;&gt;获得焦点控件Id值,比如：txt_Name&lt;/param&gt; 
<br/>&#160;&#160;/// &lt;param name=&quot;str_Message&quot;&gt;提示信息,例子：&quot;请输入您姓名!&quot;&lt;/param&gt; 
<br/>&#160;&#160;/// &lt;param name=&quot;page&quot;&gt;Page类&lt;/param&gt; 
<br/>&#160;&#160;public void Alert(string str_Ctl_Name,string str_Message,Page page) 
<br/>&#160;&#160;{ 
<br/>&#160;&#160;&#160;page.RegisterStartupScript(&quot;&quot;,&quot;&lt;script&gt;alert(&#39;&quot;+str_Message+&quot;&#39;);document.forms(0).&quot;+str_Ctl_Name+&quot;.focus(); document.forms(0).&quot;+str_Ctl_Name+&quot;.select();&lt;/script&gt;&quot;); 
<br/>&#160;&#160;} 
</p>
<p>&#160;&#160; 确认对话框</p>
<p>&#160;&#160;/// &lt;summary&gt; 
<br/>&#160;&#160;/// 服务器端弹出confirm对话框 
<br/>&#160;&#160;/// &lt;/summary&gt; 
<br/>&#160;&#160;/// &lt;param name=&quot;str_Message&quot;&gt;提示信息,例子：&quot;您是否确认删除!&quot;&lt;/param&gt; 
<br/>&#160;&#160;/// &lt;param name=&quot;btn&quot;&gt;隐藏Botton按钮Id值,比如：btn_Flow&lt;/param&gt; 
<br/>&#160;&#160;/// &lt;param name=&quot;page&quot;&gt;Page类&lt;/param&gt; 
<br/>&#160;&#160;public void Confirm(string str_Message,string btn,Page page) 
<br/>&#160;&#160;{ 
<br/>&#160;&#160;&#160;page.RegisterStartupScript(&quot;&quot;,&quot;&lt;script&gt; if (confirm(&#39;&quot;+str_Message+&quot;&#39;)==true){document.forms(0).&quot;+btn+&quot;.click();}&lt;/script&gt;&quot;); 
<br/>&#160;&#160;} 
</p>
<p>&#160;&#160; 重载确认对话框，点击确定触发一个隐藏按钮事件，点击取消触发一个隐藏按钮事件</p>
<p>&#160;&#160;/// &lt;summary&gt; 
<br/>&#160;&#160;///&#160; 服务器端弹出confirm对话框,询问用户准备转向那些操作，包括&#8220;确定&#8221;和&#8220;取消&#8221;时的操作 
<br/>&#160;&#160;/// &lt;/summary&gt; 
<br/>&#160;&#160;/// &lt;param name=&quot;str_Message&quot;&gt;提示信息，比如：&quot;成功增加数据,单击\&quot;确定\&quot;按钮填写流程,单击\&quot;取消\&quot;修改数据&quot;&lt;/param&gt; 
<br/>&#160;&#160;/// &lt;param name=&quot;btn_Redirect_Flow&quot;&gt;&quot;确定&quot;按钮id值&lt;/param&gt; 
<br/>&#160;&#160;/// &lt;param name=&quot;btn_Redirect_Self&quot;&gt;&quot;取消&quot;按钮id值&lt;/param&gt; 
<br/>&#160;&#160;/// &lt;param name=&quot;page&quot;&gt;Page类&lt;/param&gt; 
<br/>&#160;&#160;public void Confirm(string str_Message,string btn_Redirect_Flow,string btn_Redirect_Self,Page page) 
<br/>&#160;&#160;{ 
<br/>&#160;&#160;&#160;page.RegisterStartupScript(&quot;&quot;,&quot;&lt;script&gt; if (confirm(&#39;&quot;+str_Message+&quot;&#39;)==true){document.forms(0).&quot;+btn_Redirect_Flow+&quot;.click();}else{document.forms(0).&quot;+btn_Redirect_Self+&quot;.click();}&lt;/script&gt;&quot;); 
<br/>&#160;&#160;} 
<br/>&#160;&#160; 
</p>
<p>&#160; 获得焦点</p>
<p>&#160;&#160;/// &lt;summary&gt; 
<br/>&#160;&#160;/// 使控件获得焦点 
<br/>&#160;&#160;/// &lt;/summary&gt; 
<br/>&#160;&#160;/// &lt;param name=&quot;str_Ctl_Name&quot;&gt;获得焦点控件Id值,比如：txt_Name&lt;/param&gt; 
<br/>&#160;&#160;/// &lt;param name=&quot;page&quot;&gt;Page类&lt;/param&gt; 
<br/>&#160;&#160;public void GetFocus(string str_Ctl_Name,Page page) 
<br/>&#160;&#160;{ 
<br/>&#160;&#160;&#160;page.RegisterStartupScript(&quot;&quot;,&quot;&lt;script&gt;document.forms(0).&quot;+str_Ctl_Name+&quot;.focus(); document.forms(0).&quot;+str_Ctl_Name+&quot;.select();&lt;/script&gt;&quot;); 
<br/>&#160;&#160;} 
</p>
<p>&#160;子窗体返回主窗体</p>
<p>&#160;&#160;///&lt;summary&gt; 
<br/>&#160;&#160;///名称：redirect 
<br/>&#160;&#160;///功能：子窗体返回主窗体 
<br/>&#160;&#160;///参数：url 
<br/>&#160;&#160;///返回值：空 
<br/>&#160;&#160;///&lt;/summary&gt; 
<br/>&#160;&#160;public void redirect(string url,Page page) 
<br/>&#160;&#160;{ 
<br/>&#160;&#160;&#160;if ( Session[&quot;IfDefault&quot;]!=(object)&quot;Default&quot;) 
<br/>&#160;&#160;&#160;{&#160;&#160;&#160;&#160; 
<br/>&#160;&#160;&#160;&#160;page.RegisterStartupScript(&quot;&quot;,&quot;&lt;script&gt;window.top.document.location.href=&#39;&quot;+url+&quot;&#39;;&lt;/script&gt;&quot;); 
<br/>&#160;&#160;&#160;} 
<br/>&#160;&#160;} 
</p>
<p>&#160; 判断是否为数字</p>
<p>&#160;&#160;/// &lt;summary&gt; 
<br/>&#160;&#160;/// 名称：IsNumberic 
<br/>&#160;&#160;/// 功能：判断输入的是否是数字 
<br/>&#160;&#160;/// 参数：string oText：源文本 
<br/>&#160;&#160;/// 返回值：　bool true:是　false:否 
<br/>&#160;&#160;/// &lt;/summary&gt; 
<br/>&#160;&#160; 
<br/>&#160;&#160;public bool IsNumberic(string oText) 
<br/>&#160;&#160;{ 
<br/>&#160;&#160;&#160;try 
<br/>&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;int var1=Convert.ToInt32 (oText); 
<br/>&#160;&#160;&#160;&#160;return true; 
<br/>&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;catch 
<br/>&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;return false; 
<br/>&#160;&#160;&#160;} 
<br/>&#160;&#160;} 
</p>
<p>&#160; 获得字符串实际长度（包括中文字符）</p>
<p>&#160;&#160;//获得字符串oString的实际长度 
<br/>&#160;&#160;public int StringLength(string oString) 
<br/>&#160;&#160;{ 
<br/>&#160;&#160;&#160;byte[] strArray=System.Text .Encoding.Default .GetBytes (oString); 
<br/>&#160;&#160;&#160;int res=strArray.Length ; 
<br/>&#160;&#160;&#160;return res; 
<br/>&#160;&#160;} 
</p>
<p>&#160; 将回车转换为TAB</p>
<p>&#160;&#160;//当在有keydown事件的控件上敲回车时，变为tab 
<br/>&#160;&#160;public void Tab(System.Web .UI.WebControls .WebControl webcontrol) 
<br/>&#160;&#160;{ 
<br/>&#160;&#160;&#160;webcontrol.Attributes .Add (&quot;onkeydown&quot;, &quot;if(event.keyCode==13) event.keyCode=9&quot;); 
<br/>&#160;&#160;} 
</p>
<p>&#160; datagrid分页中如果删除时出现超出索引</p>
<p>&#160;&#160;public void jumppage(System.Web.UI.WebControls.DataGrid dg) 
<br/>&#160;&#160;{ 
<br/>&#160;&#160;&#160;int int_PageLess; //定义页面跳转的页数 
<br/>&#160;&#160;&#160;//如果当前页是最后一页 
<br/>&#160;&#160;&#160;if(dg.CurrentPageIndex == dg.PageCount-1) 
<br/>&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;//如果就只有一页 
<br/>&#160;&#160;&#160;&#160;if(dg.CurrentPageIndex == 0) 
<br/>&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;//删除后页面停在当前页 
<br/>&#160;&#160;&#160;&#160;&#160;dg.CurrentPageIndex = dg.PageCount-1;&#160;&#160; 
<br/>&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;else 
<br/>&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;//如果最后一页只有一条记录 
<br/>&#160;&#160;&#160;&#160;&#160;if((dg.Items.Count % dg.PageSize == 1) || dg.PageSize == 1) 
<br/>&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;//把最后一页最后一条记录删除后，页面应跳转到前一页&#160; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;int_PageLess = 2; 
<br/>&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;else&#160;&#160;&#160;&#160;&#160; //如果最后一页的记录数大于1，那么在最后一页删除记录后仍然停在当前页 
<br/>&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;int_PageLess = 1; 
<br/>&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;dg.CurrentPageIndex = dg.PageCount - int_PageLess; 
<br/>&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;} 
<br/>&#160;&#160;} 
</p>
<p>平时经常用到的代码，本人水平有限如有疏漏之处，还请指出！</p>
<p>在这里要感谢<strong>艳辉、阿好(hbzxf)</strong>的鼎立支持！ 
</p><img src ="http://www.cnblogs.com/mikecat888/aggbug/78646.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42805/" target="_blank">[新闻]Google Knol 开始尝试有声版</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>datagrid的正反双向排序</title><link>http://www.cnblogs.com/mikecat888/archive/2004/12/18/78644.html</link><dc:creator>迈克老猫</dc:creator><author>迈克老猫</author><pubDate>Fri, 17 Dec 2004 16:42:00 GMT</pubDate><guid>http://www.cnblogs.com/mikecat888/archive/2004/12/18/78644.html</guid><wfw:comment>http://www.cnblogs.com/mikecat888/comments/78644.html</wfw:comment><comments>http://www.cnblogs.com/mikecat888/archive/2004/12/18/78644.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/mikecat888/comments/commentRss/78644.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/mikecat888/services/trackbacks/78644.html</trackback:ping><description><![CDATA[迈克老猫（MikeCat) 
<p align="center">来自：<a href="http://www.mikecat.net/"><font color="#0000ff">老猫の理想</font></a> 
</p>
<p>&#160; &#160;呵呵，本没有写文章之意，看到好友<strong>阿好（hbzxf)</strong>的文章，也决定把平时的一些东西写出来和大家分享！有疏漏之处，敬请大家指教！ 
</p>
<p>&#160;&#160;&#160; &#160;在asp.net中利用datagrid控件按列进行排序很是方便。可是我们只能单项排序！如果我们需要正反排序那么就需要加入一些代码控制一下,下面我来详细讲解一下这个过程。</p>
<p>&#160; 首先我们需要将datagird控件的属性设置为 AllowSorting=&quot;True&quot;，且需要排序列需要制定排序表达式 eg: SortExpression=&quot;kmdm&quot;。设置好这些，我们进入代码文件，来编写响应排序的事件.</p>
<p>&#160; 首先在Page_Load时间中加入如下代码：</p>
<p>&#160;&#160;&#160;if (!IsPostBack) 
<br/>&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;if(this.kjkm_dg.Attributes[&quot;SortExpression&quot;]==null) //这里kjkm_dg为datagrid&#160;&#160; ID 
<br/>&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;this.kjkm_dg.Attributes[&quot;SortExpression&quot;]=&quot;kmdm&quot;;&#160; //这里给datagrid增加一个排序属性，且默认排序表达式为kmdm; 
<br/>&#160;&#160;&#160;&#160;&#160;kjkm_dg.Attributes[&quot;SortDirection&quot;]=&quot;ASC&quot;; //这里给datagrid增加一个排序方向属性,且默认为升序排列; 
<br/>&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;mikecatbind(); //绑定函数,下面介绍 
<br/>&#160;&#160;&#160;} 
</p>
<p>&#160;&#160;protected void mikecatbind() 
<br/>&#160;&#160;{ 
<br/>&#160;&#160;&#160;string sqlStr=&quot;select * from zc_kjkm&quot;; 
<br/>&#160;&#160;&#160;DataView dv=new DataView(); 
<br/>&#160;&#160;&#160; 
<br/>&#160;&#160;&#160;string SortExpression=kjkm_dg.Attributes[&quot;SortExpression&quot;]; 
<br/>&#160;&#160;&#160;string SortDirection=kjkm_dg.Attributes[&quot;SortDirection&quot;]; 
<br/>&#160;&#160;&#160;dv=us.Bind(sqlStr).Tables[0].DefaultView;&#160; //来自web service的dataset,这里随便一个ds就可以; 
<br/>&#160;&#160;&#160;dv.Sort=SortExpression+&quot; &quot;+SortDirection; //指定视图的排序方式; 
<br/>&#160;&#160;&#160;kjkm_dg.DataSource=dv; //指定数据源 
<br/>&#160;&#160;&#160;kjkm_dg.DataBind(); //数据绑定 
</p>
<p>}</p>
<p>&#160;&#160; 进行完上面的设置后我们进入重要的环节，排序事件的编写:</p>
<p>&#160;&#160;private void kjkm_dg_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e) 
<br/>&#160;&#160;{ 
<br/>&#160;&#160;&#160;string SortExpression=e.SortExpression.ToString();&#160; //获得当前排序表达式 
<br/>&#160;&#160;&#160;string SortDirection=&quot;ASC&quot;; //为排序方向变量赋初值 
<br/>&#160;&#160;&#160;if(SortExpression==kjkm_dg.Attributes[&quot;SortExpression&quot;])&#160; //如果为当前排序列 
<br/>&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;<font color="#ee1111">SortDirection=(kjkm_dg.Attributes[&quot;SortDirection&quot;].ToString()==SortDirection?&quot;DESC&quot;:&quot;ASC&quot;);&#160;&#160;&#160;&#160; //获得下一次的排序状态</font> 
</p>
<p>&#160;} 
<br/>&#160;&#160;&#160;kjkm_dg.Attributes[&quot;SortExpression&quot;]=SortExpression; 
<br/>&#160;&#160;&#160;kjkm_dg.Attributes[&quot;SortDirection&quot;]=SortDirection; 
<br/>&#160;&#160;&#160;mikecatbind(); 
<br/>&#160;&#160;} 
</p>
<p>&#160;</p>
<p>好了，试试看看是不是可以进行正倒序排列啦。</p><img src ="http://www.cnblogs.com/mikecat888/aggbug/78644.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42805/" target="_blank">[新闻]Google Knol 开始尝试有声版</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>Csharp+Asp.net系列教程（六） </title><link>http://www.cnblogs.com/mikecat888/archive/2004/12/18/78641.html</link><dc:creator>迈克老猫</dc:creator><author>迈克老猫</author><pubDate>Fri, 17 Dec 2004 16:36:00 GMT</pubDate><guid>http://www.cnblogs.com/mikecat888/archive/2004/12/18/78641.html</guid><wfw:comment>http://www.cnblogs.com/mikecat888/comments/78641.html</wfw:comment><comments>http://www.cnblogs.com/mikecat888/archive/2004/12/18/78641.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/mikecat888/comments/commentRss/78641.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/mikecat888/services/trackbacks/78641.html</trackback:ping><description><![CDATA[本教程参考C#和ASP.NET程序设计教程撰写，有什么不足之处请大家指出，或在<a href="http://www.mikecat.net/" target="_blank"><font color="#0000ff">老猫的理想BLOG</font></a>留言。 
<br/>
<br/>&#160;&#160;好些天不写了。今天事情较少，有几个网友总是问，就又写了点东西。可能疏漏比较多，希望大家帮忙指正 
<br/>
<br/>&#160;&#160;&#160;&#160;预处理指令：与c++不同，c#没有独立的预处理器。在c#中，预处理指令并不是编译器开始编译代码之前的一个单独的处理步骤，而是作为词法分析的一部分来执行的。预处理指令都以＃号开头并位于行首。 
<br/>&#160;&#160;&#160;&#160;#define指令用于定义符合，他的作用域是该定义所在的整个文件，符号定义必须放在所有其他语句的前面，或者说在所有&#8220;实代码（real&#160;code）&#8221;之前。（比如:&quot;using&#160;system&quot;就是实代码。） 
<br/>&#160;&#160;&#160;&#160;想取消某个符号的定义，则要用到#undef指令。 
<br/>&#160;&#160;&#160;&#160;条件编译指令有4个：#if、#elif、#else、#endif，他们用来有条件地将部分程序代码包括进来或排除在外。条件编译指令和if语句有类似的作用。也可以在条件编译指令中用逻辑与（&amp;&amp;）、逻辑或（||）、等于（==）、不等于（!=）等操作符。 
<br/>&#160;&#160;&#160;&#160;eg: 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;#define&#160;MF1 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;#define&#160;MF2 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;using&#160;System; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;public&#160;class&#160;MikeCat 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;public&#160;static&#160;void&#160;Main() 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;#if&#160;(MF1&amp;&amp;!MF2) 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Console.WriteLine(&quot;MF1被定义&quot;); 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;#elif(!MF1&amp;&amp;MF2) 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Console.WriteLine(&quot;MF2被定义&quot;); 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;#elif(MF1&amp;&amp;MF2) 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Console.WriteLine(&quot;MF1和MF2被定义&quot;); 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;#else 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Console.WriteLine(&quot;MF1和MF2没被定义&quot;); 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;#endif 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}//运行结果：MF1和MF2被定义 
<br/>&#160;&#160;&#160;&#160;#error和#warning指令用于发出编译错误和警告。 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;eg: 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;#define&#160;MF1 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;#define&#160;MF2 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;using&#160;System; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;public&#160;class&#160;MikeCat 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;public&#160;static&#160;void&#160;Main() 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;#if&#160;MF1 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;#warning&#160;欢迎来到老猫的理想！ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;#endif 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;#if&#160;&#160;&#160;&#160;MF2 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;#error&#160;老猫的理想BLOG出错 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;#endif 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}//运行结果：test.cs(9,17):&#160;warning&#160;CS1030:&#160;#warning:&#8220;欢迎来到老猫的理想！&#8221; 
<br/>//test.cs(12,15):&#160;error&#160;CS1029:&#160;#error:&#8220;老猫的理想BLOG出错&#8221; 
<br/>&#160;&#160;&#160;&#160;#line指令用于修改编译器行号及文件名 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;eg: 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;using&#160;System; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;public&#160;class&#160;MikeCat 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;public&#160;static&#160;void&#160;Main() 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;#line&#160;66&#160;&quot;mfblog.cs&quot;&#160;//将编译行号设为66并将文件名改名为mfblog.cs 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;intt&#160;i=1; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Console.WriteLine(&quot;i的值是{0}&quot;,i); 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}//运行结果：mfblog.cs(66,6):&#160;error&#160;CS0246:&#160;找不到类型或命名空间名称&#8220;intt&#8221;(是否缺少&#160;using指令或程序集引用？) 
<br/>//mfblog.cs(67,34):&#160;error&#160;CS0103:&#160;名称&#8220;i&#8221;在类或命名空间&#8220;MikeCat&#8221;中不存在 
<br/>&#160;&#160;&#160;&#160; 
<br/>&#160;&#160;&#160;&#160;异常处理：在c#中，引发异常有两种状况，第一种：在程序中使用throw语句，立即无条件引发一个异常。第二种情况是c#语句或表达式在执行过程中激发了某个异常的条件，从而使得操作无法正常结束，从而引发异常。 
<br/>&#160;&#160;&#160;&#160;在c#中，异常是由try语句来处理。try语句提供了一种机制来捕捉程序过程中引发的异常。try有三种可能的结构，即：try-catch|try-finally|try-catch-finally 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;try-catch结构：try子句后跟一个或多个catch子句。如果执行try子句中的语句时引发了异常，那么程序将按顺序查找第一个能处理该异常的catch子句，并将控制权转移到catch子句执行。既没定义异常类型，也没定义异常变量的catch子句称为普通catch子句。一个try子句最多只能有一个普通catch子句，而且该子句必须排在其他catch子句的后面。 
<br/>&#160;&#160;&#160;&#160;eg: 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;using&#160;System; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;class&#160;MikeCat 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;static&#160;void&#160;mf1(string&#160;s) 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if(s==null) 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;throw(new&#160;ArgumentNullException());//引发异常 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;static&#160;void&#160;mf2() 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;try 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;string&#160;s=null; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;mf1(s);//调用mf()方法。由于s=null，因此会引发异常 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;catch(ArgumentNullException&#160;ex) 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Console.WriteLine(&quot;mf2()方法中的异常：{0}&quot;,ex.Message); 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;throw;//再次引发 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;public&#160;static&#160;void&#160;Main() 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;try 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;mf2();//调用mf2()方法 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;catch(ArgumentNullException&#160;ex) 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Console.WriteLine(&quot;Main()方法中的异常{0}&quot;,e.Message); 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}//mf2()方法中的异常：值不能为空。 
<br/>//Main()方法中的异常值不能为空。 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;try-finally结构：即try子句后跟一个finally子句。不管try子句是如何退出的（无论正常退出，还是引发异常，甚至执行goto|break|continue|return语句退出），程序的控制权总是会被转移到finally子句执行。 
<br/>&#160;&#160;&#160;&#160;eg: 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;using&#160;System; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;public&#160;class&#160;MikeCat 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;public&#160;static&#160;void&#160;Main() 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;try 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Console.WriteLine(&quot;执行try子句&quot;); 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//goto&#160;leave;//跳转到leave标签 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;finally 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Console.WriteLine(&quot;执行finally子句&quot;); 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;leave: 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Console.WriteLine(&quot;执行leave标签！&quot;); 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}//执行try子句执行finally子句 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;try-catch-finally:即try子句后跟一个或多个catch子句及一个finally子句 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;eg: 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;using&#160;System; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;class&#160;MikeCat 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;static&#160;void&#160;mf(string&#160;s) 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if(s==null) 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;throw(new&#160;ArgumentNullException());//引发异常 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;public&#160;static&#160;void&#160;Main() 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;try 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;string&#160;s=null; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;mf(s);//调用mf()方法，由于s=null，因此会引发异常 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;catch(ArgumentNullException&#160;ex) 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Console.WriteLine(&quot;异常发生：{0}&quot;,ex.Message); 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;finally 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Console.WriteLine(&quot;执行finally子句&quot;); 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}<b> 
<br/></b><img src ="http://www.cnblogs.com/mikecat888/aggbug/78641.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42805/" target="_blank">[新闻]Google Knol 开始尝试有声版</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>Csharp+Asp.net系列教程（五） </title><link>http://www.cnblogs.com/mikecat888/archive/2004/12/18/78640.html</link><dc:creator>迈克老猫</dc:creator><author>迈克老猫</author><pubDate>Fri, 17 Dec 2004 16:32:00 GMT</pubDate><guid>http://www.cnblogs.com/mikecat888/archive/2004/12/18/78640.html</guid><wfw:comment>http://www.cnblogs.com/mikecat888/comments/78640.html</wfw:comment><comments>http://www.cnblogs.com/mikecat888/archive/2004/12/18/78640.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/mikecat888/comments/commentRss/78640.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/mikecat888/services/trackbacks/78640.html</trackback:ping><description><![CDATA[本教程参考C#和ASP.NET程序设计教程撰写，有什么不足之处请大家指出，或在<a href="http://www.mikecat.net/" target="_blank"><font color="#0000ff">老猫的理想BLOG</font></a>留言。 
<br/>
<br/>&#160;&#160;&#160;长假就要过去了。钱包也空空如也了，又要投入让人生畏的紧张工作中了...&#160;感慨虽然很多，可是教程还是要继续的写，先发几句牢骚。^_^，不过教程可能以后要写的慢些了，因为心有余而力不足丫！不说废话进入正题： 
<br/>&#160;&#160;&#160;有网友说教程过于繁琐，呵呵，下面正好要分析一下流程控制语句，有C程序设计基础的就略过这段，考虑有新手还是简要的介绍一下，详细还请参阅谭浩强教授的《C语言程序设计》一书吧，很强，值得一看。 
<br/>&#160;&#160;&#160;&#160;c#中，有两种选择语句：if语句、switch语句。 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;1.if&#160;(布尔表达式) 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;内嵌语句; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else&#160;if(布尔表达式) 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;内嵌语句; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;内嵌语句; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}//当布尔表达式的值为真时，执行if后面的内嵌语句。 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;还是举个小例子吧，要不总觉得不够透彻。注意例子中穿插介绍的程序入口点带参数的Main()方法、还有char的IsDigit方法。 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;using&#160;System; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;class&#160;MikeCat 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;public&#160;static&#160;void&#160;Main(string[]&#160;args) 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if(args.Length!=1)//判断参数个数的布尔运算 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Console.WriteLine(&quot;命令行参数只能是一个&quot;); 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;char&#160;c=args[0][0];//此处想和大家讨论：第一维感觉是第几个参数的索引，第二维是某个参数的字符数索引。不知是否正确，没有查到相关资料，大家怎么看？？ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if((c&gt;=&#39;A&#39;)&amp;&amp;(c&lt;=&#39;Z&#39;)) 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Console.WriteLine(&quot;{0}是大写字母&quot;,c); 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if((c&gt;=&#39;a&#39;)&amp;&amp;(c&lt;=&#39;z&#39;)) 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Console.WriteLine(&quot;{0}是小写字母&quot;,c); 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if(Char.IsDigit(c)) 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Console.WriteLine(&quot;{0}是数字&quot;,c); 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main&#160;方法是程序的入口点，程序控制在该方法中开始和结束。该方法在类或结构的内部声明。它必须为静态的。它可以具有&#160;void&#160;或&#160;int&#160;返回类型。在&#160;Main&#160;方法中创建对象和调用其他方法。声明&#160;Main&#160;方法时既可以不使用参数，也可以使用参数。 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main&#160;方法可以是&#160;void&#160;类型： 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;static&#160;void&#160;Main()&#160; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;它还可以返回&#160;int： 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;static&#160;int&#160;Main()&#160; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return&#160;0; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main&#160;方法可以使用参数，在这种情况下它采用下列形式之一： 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;static&#160;int&#160;Main(string[]&#160;args) 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;static&#160;void&#160;Main(string[]&#160;args) 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Main&#160;方法的参数是表示命令行参数的&#160;string&#160;数组。通常通过测试&#160;Length&#160;属性来检查参数是否存在，例如： 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(args.Length&#160;==&#160;0)&#160; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Console.WriteLine(&quot;Please&#160;enter&#160;a&#160;numeric&#160;argument.&quot;);&#160; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;return&#160;1;&#160; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;还可以使用&#160;Convert&#160;类或&#160;Parse&#160;方法将字符串参数转换为数值类型。例如，下面的语句使用&#160;Int64&#160;类上的&#160;Parse&#160;方法将字符串转换为&#160;long&#160;型数字： 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;long&#160;num&#160;=&#160;Int64.Parse(args[0]); 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;也可以使用别名为&#160;Int64&#160;的&#160;C#&#160;类型&#160;long： 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;long&#160;num&#160;=&#160;long.Parse(args[0]); 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;还可以使用&#160;Convert&#160;类的方法&#160;ToInt64&#160;完成同样的工作： 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;long&#160;num&#160;=&#160;Convert.ToInt64(s); 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 
<br/>&#160;&#160;&#160;&#160;Char.IsDigit&#160;方法 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;指示某个&#160;Unicode&#160;字符是否属于十进制数字类别。 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;public&#160;static&#160;bool&#160;IsDigit(char); 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;指示指定字符串中位于指定位置处的字符是否属于十进制数字类别。 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;public&#160;static&#160;bool&#160;IsDigit(string,&#160;int); 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;using&#160;System; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;public&#160;class&#160;IsDigitSample&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;public&#160;static&#160;void&#160;Main()&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;char&#160;ch&#160;=&#160;&#39;8&#39;; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Console.WriteLine(Char.IsDigit(ch));&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//&#160;Output:&#160;&quot;True&quot; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Console.WriteLine(Char.IsDigit(&quot;sample&#160;string&quot;,&#160;7));&#160;&#160;&#160;&#160;//&#160;Output:&#160;&quot;False&quot; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;2.switch(控制表达式) 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;case&#160;常量表达式: 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;内嵌语句; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;[break;] 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;[goto&#160;case&#160;常量表达式] 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;... 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;default: 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;内嵌语句; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}//switch语句是if语句的变种。如果把一个变量或表达式与许多不同的值进行比较并根据不同的比较结果执行不同的程序段。 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;注意c#中如果要想实现象c/c++中那样的直达功能，则要使用goto&#160;case和goto&#160;default跳转语句。 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;循环语句用于重复执行一行或多行代码。c#中有四种循环语句：while、do...while、for、foreach语句。 
<br/>&#160;&#160;&#160;&#160;1.while(布尔表达式) 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;内嵌语句; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}//计算布尔表达式的值。当布尔表达式为真时，执行一遍内嵌语句。 
<br/>&#160;&#160;&#160;&#160;不举例子了，说说需要注意的部分吧：while语句是有条件地重复执行内嵌语句0次或多次。在while语句中，可以用break语句立即结束循环。另外也可以使用continue语句停止内嵌语句的执行，而继续下一次循环。 
<br/>&#160;&#160;&#160;&#160;2.do...while语句 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;区别与while语句首先要执行一次内嵌语句，然后才检查布尔表达式。 
<br/>&#160;&#160;&#160;&#160;3.for&#160;语句 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;for(initializer;condition;iterator) 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;内嵌语句; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}//initializer、condition、iterator均是可选项。initializer用于初始化循环控制变量，此变量可以有一个或多个(用逗号隔开);condition为循环控制条件，也可以有一个或多个语句;iterator按规律改变循环控制变量的值。 
<br/>&#160;&#160;&#160;&#160;4.foreach语句 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;foreach语句从c#中新引入的，c/c++中没有此语句。foreach用于枚举集合中每个元素，并对每个元素执行内嵌语句。 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;foreach(type&#160;identifier&#160;in&#160;expression) 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;内嵌语句; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}//类型type和标识符identifier用来声明循环变量，表达式对应要枚举的集合。 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;using&#160;System; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;using&#160;System.Collections; 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;class&#160;MikeCat 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;public&#160;static&#160;void&#160;Main() 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;IDictionary&#160;envvars=Environment.GetEnvironmentVariables(); 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Console.WriteLine(&quot;共有{0}个环境变量&quot;,envvars.Keys.Count); 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;//循环输出每个环境变量及其值 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;foreach(string&#160;k&#160;in&#160;envvars.Keys) 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{ 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Console.WriteLine(&quot;{0}={1}&quot;,k,envvars[k].ToString());//或者用envvars.Value 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/>&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;} 
<br/><img src ="http://www.cnblogs.com/mikecat888/aggbug/78640.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42805/" target="_blank">[新闻]Google Knol 开始尝试有声版</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>Csharp+Asp.net系列教程（四）</title><link>http://www.cnblogs.com/mikecat888/archive/2004/12/18/78639.html</link><dc:creator>迈克老猫</dc:creator><author>迈克老猫</author><pubDate>Fri, 17 Dec 2004 16:31:00 GMT</pubDate><guid>http://www.cnblogs.com/mikecat888/archive/2004/12/18/78639.html</guid><wfw:comment>http://www.cnblogs.com/mikecat888/comments/78639.html</wfw:comment><comments>http://www.cnblogs.com/mikecat888/archive/2004/12/18/78639.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/mikecat888/comments/commentRss/78639.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/mikecat888/services/trackbacks/78639.html</trackback:ping><description><![CDATA[摘要: 迈克老猫 来自：老猫的理想 本教程参考C#和ASP.NET程序设计教程撰写，有什么不足之处请大家指出，或在老猫的理想BLOG留言。 这次简述一下操作符 &#160;&#160;&#160;&#160; 1.算术操作符 &#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;算术操作符包括加(+)、减(-)、乘&nbsp;&nbsp;<a href='http://www.cnblogs.com/mikecat888/archive/2004/12/18/78639.html'>阅读全文</a><img src ="http://www.cnblogs.com/mikecat888/aggbug/78639.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42805/" target="_blank">[新闻]Google Knol 开始尝试有声版</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>Csharp+Asp.net系列教程（三） </title><link>http://www.cnblogs.com/mikecat888/archive/2004/12/18/78636.html</link><dc:creator>迈克老猫</dc:creator><author>迈克老猫</author><pubDate>Fri, 17 Dec 2004 16:24:00 GMT</pubDate><guid>http://www.cnblogs.com/mikecat888/archive/2004/12/18/78636.html</guid><wfw:comment>http://www.cnblogs.com/mikecat888/comments/78636.html</wfw:comment><comments>http://www.cnblogs.com/mikecat888/archive/2004/12/18/78636.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/mikecat888/comments/commentRss/78636.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/mikecat888/services/trackbacks/78636.html</trackback:ping><description><![CDATA[<p align="center">迈克老猫 
<br/>来自：<a href="http://www.mikecat.net/"><font color="#ff0000"><strong>老猫的理想</strong></font></a> 
   </p>
   <p align="left">本教程参考C#和ASP.NET程序设计教程撰写，有什么不足之处请大家指出，或在<a href="http://www.mikecat.net/" target="_blank"><font color="#0000ff">老猫的理想BLOG</font></a>留言。 
<br/>
<br/>这次我们首先讲解一下类型转换，我们在写程序时经常用到类型转换，而且特别多的规则。我在这里粗略的讲解一下。 
<br/>隐式转换是系统默认的、不需要加以声明即可进行的转换。 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> 1.隐式数值转换 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->隐式数值转换实际上就是从低精度的数值类型转换到高精度的数值类型的转换。 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->byte x=255;ushort y=x;y=65535;float z=y;//均从低精度到高精度，反之会产生溢出 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> 隐式数值转换的类型太多,我就不多介绍，记住上面的原则就可以了。详细规则可查看msdn 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> 2.隐式枚举转换 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> 隐式枚举转换用于把十进制整数0转换成任何枚举类型，对应的其他整数则不存在这种转换。 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> using System; 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> enum Color 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> { 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->Red,Green,Blue 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> }; 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> class MikeCat 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> { 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->static void Main() 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->{ 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->Color c;//声明Color的变量c; 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->c=0;//将0转换为Red; 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->Console.WriteLine(&quot;c的值是{0}&quot;,c);//结果：c的值是Red;如果将c=0改成c=1，则编译器会给出错误。 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->} 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> } 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> 3.隐式引用转换 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> 从任何引用类型到object的转换。 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> 从类类型A到类类型B的转换，其中类A从类B派生得到。 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> 从类类型A到接口类型B的转换，其中类A实现了接口B。 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> 从接口类型A到接口类型B的转换，其中接口A是从接口B派生。 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> 从任何数组类型到System.Array的转换。 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> 从任何委托类型到System.Delegate的转换。 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> 从任何数组类型或委托类型到System.ICloneable的转换。 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> 从空类型（null）到任何引用类型的转换。 
<br/>显示转换也称为强制转换，它需要用户明确地指定转换的类型。 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> char c=(char)65;//A 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> int i=(int)&#39;A&#39;;//65 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> 显示转换包含所有的隐式转换，即任何系统允许的隐式转换写成显示转换的形式都是允许的。 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> int i=300; 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> long l=(long)i; 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> 另外一例： 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->using System; 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->class MikeCat 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->{ 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->static void Main() 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->{ 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->long longValue = Int64.MaxValue; 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->int intValue = (int) longValue; 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->Console.WriteLine(&quot;(int){0} = {1}&quot;, longValue, intValue); 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->} 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->} 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->类型 long 转换为 int 是显式转换，它使用了强制转换表达式。输出为： 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->(int) 9223372036854775807 = -1这是因为有溢出发生。 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->1.显示数值转换 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->显示数值转换是指当不存在相应的隐式转换时从一种数值类型转换为另一种数值类型。转换类型也很繁琐，只需记住转换规则，详细查阅MSDN。由于显示数值转换可能丢失信息或引发异常，因此转换按以下原理被处理：简略说就是高精度显示转换为低精度会引发异常（OverFlowException），未引发异常的情况，源变量的值通过舍入得到最接近的整型值作为转换结果。详细转换时的异常情况查阅MSDN 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->/*test.cs*/ 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->using System; 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->public class MikeCat 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->{ 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->public static void Main() 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->{ 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->ushort u=65535; 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->byte b=(byte)u; 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->Console.WriteLine(&quot;b的值是{0}&quot;,b); 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->} 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->} 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->编译状况如下： 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> <!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->E:\&gt;csc test.cs 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->Microsoft (R) Visual C# .NET 编译器版本 7.10.3052.4 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->用于 Microsoft (R) .NET Framework 版本 1.1.4322 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->版权所有 (C) Microsoft Corporation 2001-2002。保留所有权利。 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->E:\&gt;test.exe 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->b的值是255 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->E:\&gt;csc/checked test.cs ///checked[+|-] 生成溢出检查 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->E:\&gt;test.exe 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->未处理的异常： System.OverflowException: 算术运算导致溢出。 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->at MikeCat.Main() 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->E:\&gt;csc/checked- test.cs 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->E:\&gt;test.exe 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->b的值是255 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->2.显示枚举转换 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->显示枚举转换其实就是将枚举类型的元素类型与相应类型之间进行隐式显示转换。比如，有一个元素类型int的枚举类型E,当执行从E到byte的显示枚举转换时，实际执行的是从int到byte的显示数值转换。 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->using System; 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->enum Color 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->{ 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->Red,Green,Blue 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->}; 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->public class MikeCat 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->{ 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->static void Main() 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->{ 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->Color c;//声明Color的变量c; 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->c=(Color)4;//对数字3进行显示枚举转换 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->Console.WriteLine(&quot;c的值是{0}&quot;,c); 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->} 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->} 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->结果：c的值是4 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->Convert 类 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->将一个基本数据类型转换为另一个基本数据类型。 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->该类返回值与指定类型的值等效的类型。受支持的基类型是 Boolean、Char、SByte、Byte、Int16、Int32、Int64、UInt16、UInt32、UInt64、Single、Double、Decimal、DateTime 和 String。 
<br/>
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->存在将每个基类型转换为每个其他基类型的转换方法。不过，所执行的实际转换操作分为三类： 
<br/>
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->从某类型到它本身的转换只返回该类型。不实际执行任何转换。 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->无法产生有意义的结果的转换引发 InvalidCastException。不实际执行任何转换。下列转换会引发异常：从 Char 转换为 Boolean、Single、Double、Decimal 或 DateTime，以及从这些类型转换为 Char。下列转换会引发异常：从 DateTime 转换为除 String 之外的任何类型，以及从任何类型（String 除外）转换为 DateTime。 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->任何基类型（上面描述的基类型除外）都可以与任何其他基类型进行相互转换。 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->如果数字类型转换导致精度丢失（即某些最低有效位丢失），不引发异常。但是，如果结果超出了特定转换方法的返回值类型所能表示的范围，则将引发异常。 
<br/>
<br/>下面介绍一下和类型转换相关的装箱、取消装箱 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->装箱是值类型到 object 类型或到该值类型所实现的任何接口类型的隐式转换。将一个值的值装箱会分配一个对象实例并将该值复制到新的对象中。 
<br/>
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->请看以下值类型变量的声明： 
<br/>
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->int i = 123; 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->以下语句对变量 i 隐式应用装箱操作： 
<br/>
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->object o = i; 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->此语句的结果是在堆栈上创建对象 o，而该对象在堆上引用 int 类型的值。该值是赋给变量 i 的值类型值的一个副本。下图说明了两个变量 i 和 o 之间的差异。 
<br/>
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->装箱转换 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->在堆栈上<!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->在堆上 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->i 123 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->int i=123; 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->o<!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->(将i装箱) 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->object o=i;<!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->int 123 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->也可以（但绝不必要）如下例所示显式执行装箱： 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->int i = 123; 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->object o = (object) i; 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->示例 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->此例将整数变量 i 通过装箱转换为对象 o。这样，存储在变量 i 中的值就从 123 更改为 456。此例显示对象保留了内容的原始副本，即 123。 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->// boxing.cs 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->// Boxing an integer variable 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->using System; 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->class TestBoxing 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->{ 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> public static void Main() 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> { 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> int i = 123; 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> object o = i; // Implicit boxing 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> i = 456; // Change the contents of i 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> Console.WriteLine(&quot;The value-type value = {0}&quot;, i); 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> Console.WriteLine(&quot;The object-type value = {0}&quot;, o); 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> } 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->} 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->输出 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->The value-type value = 456 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->The object-type value = 123 
<br/>
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->取消装箱 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->取消装箱是从 object 类型到值类型或从接口类型到实现该接口的值类型的显式转换。取消装箱操作包括： 
<br/>
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->检查对象实例，确保它是给定值类型的一个装箱值。 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->将该值从实例复制到值类型变量中。 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->以下语句同时说明了装箱和取消装箱操作： 
<br/>
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->int i = 123; // A value type 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->object box = i; // Boxing 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->int j = (int)box; // Unboxing 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->下图显示了以上语句的结果。 
<br/>
<br/>取消装箱转换 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->在堆栈上<!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->在堆上 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->i 123 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->int i=123; 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->o<!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->(将i装箱) 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->object o=i;<!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->int 123 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->j 123 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->int j=(int) o; 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->为使到给定值类型的取消装箱转换在运行时取得成功，源参数的值必须是对某个对象的引用，而该对象先前是通过将该值类型的值装箱创建的。如果源参数为 null 或是对一个不兼容对象的引用，则会引发 InvalidCastException。 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->示例 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->下面的示例阐释无效取消装箱的情况，即错误的取消装箱如何导致 InvalidCastException。通过使用 try 和 catch，发生错误时会显示错误信息。 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->using System; 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->public class UnboxingTest 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab-->{ 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> public static void Main() 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> { 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> int intI = 123; 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> // Boxing 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> object o = intI; 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> // Reference to incompatible object produces InvalidCastException 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> try 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> { 
<br/><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--><!--ubbcodetab-->&#160;&#160;&#160;&#160;<!--/ubbcodetab--> int intJ = (short) o; 
