﻿<?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>博客园-asp.net C# 痕风</title><link>http://www.cnblogs.com/ilovexiao/</link><description>


所有的开心与痛苦都会随风飘向远方,什么也不会留下.唯有未干的双眼让人们知道发生过.还有小小</description><language>zh-cn</language><lastBuildDate>Sat, 30 Aug 2008 01:13:22 GMT</lastBuildDate><pubDate>Sat, 30 Aug 2008 01:13:22 GMT</pubDate><ttl>60</ttl><item><title>for all your mad scientific needs think geek</title><link>http://www.cnblogs.com/ilovexiao/archive/2008/06/21/1227394.html</link><dc:creator>何随风</dc:creator><author>何随风</author><pubDate>Sat, 21 Jun 2008 09:50:00 GMT</pubDate><guid>http://www.cnblogs.com/ilovexiao/archive/2008/06/21/1227394.html</guid><wfw:comment>http://www.cnblogs.com/ilovexiao/comments/1227394.html</wfw:comment><comments>http://www.cnblogs.com/ilovexiao/archive/2008/06/21/1227394.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/ilovexiao/comments/commentRss/1227394.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ilovexiao/services/trackbacks/1227394.html</trackback:ping><description><![CDATA[<font face="Verdana"><strong>for all your mad scientific needs think geek</strong></font>
<img src ="http://www.cnblogs.com/ilovexiao/aggbug/1227394.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41960/" target="_blank">[新闻]微软4.86亿美元收购Greenfield</a>]]></description></item><item><title>Dictionary.TryGetValue 方法 试用记　Mark</title><link>http://www.cnblogs.com/ilovexiao/archive/2008/06/10/1216796.html</link><dc:creator>何随风</dc:creator><author>何随风</author><pubDate>Tue, 10 Jun 2008 08:42:00 GMT</pubDate><guid>http://www.cnblogs.com/ilovexiao/archive/2008/06/10/1216796.html</guid><wfw:comment>http://www.cnblogs.com/ilovexiao/comments/1216796.html</wfw:comment><comments>http://www.cnblogs.com/ilovexiao/archive/2008/06/10/1216796.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/ilovexiao/comments/commentRss/1216796.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ilovexiao/services/trackbacks/1216796.html</trackback:ping><description><![CDATA[<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(name&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">||</span><span style="color: #000000">&nbsp;name&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">""</span><span style="color: #000000">)<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;XLine&nbsp;obj;<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(xlines.TryGetValue(name,&nbsp;</span><span style="color: #0000ff">out</span><span style="color: #000000">&nbsp;obj))<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img id="Codehighlighter1_148_191_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_148_191_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_148_191_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_148_191_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_148_191_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_148_191_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_148_191_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_148_191_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_148_191_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_148_191_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;obj;<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img id="Codehighlighter1_221_265_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_221_265_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_221_265_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_221_265_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_221_265_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_221_265_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_221_265_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_221_265_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_221_265_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_221_265_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">;<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
在盖次的MSDN里找到一些东东．<br />
<font face="Verdana"><a title="http://msdn.microsoft.com/zh-cn/library/zkw5c9ak(VS.80).aspx" href="http://msdn.microsoft.com/zh-cn/library/zkw5c9ak(VS.80).aspx"><font face="Verdana">http://msdn.microsoft.com/zh-cn/library/zkw5c9ak(VS.80).aspx</font></a><br />
<div class="majorTitle">.NET Framework 类库<!----></div>
<div class="title">Dictionary.TryGetValue 方法<!----></div>
<!--content type: DocStudio. Transform: devdiv2mtps.xslt.-->
<div id="mainSection">
<div id="mainBody">
<p><span style="color: red">注意：此方法在 .NET Framework 2.0 版中是新增的。</span>
<p>获取与指定的键相关联的值。
<p><strong>命名空间:</strong>System.Collections.Generic<br />
<strong>程序集:</strong>mscorlib（在 mscorlib.dll 中）
<div class="MTPS_CollapsibleRegion" id="ctl00_rs1_mainContentContainer_cpe251553">
<div class="CollapseRegionLink" id="ctl00_rs1_mainContentContainer_cpe251553_h"><img id="ctl00_rs1_mainContentContainer_cpe251553_i" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; vertical-align: middle; border-right-width: 0px" src="http://i.msdn.microsoft.com/Platform/Controls/CollapsibleArea/resources/plus.gif"  alt="" />&nbsp;语法 </div>
<div class="MTPS_CollapsibleSection" id="ctl00_rs1_mainContentContainer_cpe251553_c" style="display: none; overflow: visible; width: auto; height: 0px" olddisplay="block">
<div class="MTPS_CollapsibleSection" id="" style="border-right: medium none; border-top: medium none; display: block; border-left: medium none; border-bottom: medium none"><a name="syntaxToggle"></a>
<div class="libCScode" id="ctl00_rs1_mainContentContainer_ctl10_VisualBasicDeclaration">
<div class="CodeSnippetTitleBar">
<div class="CodeDisplayLanguage">Visual Basic（声明）</div>
</div>
<pre class="libCScode" id="ctl00_rs1_mainContentContainer_ctl10VisualBasicDeclaration" space="preserve"><span style="color: blue">Public</span> <span style="color: blue">Function</span> TryGetValue ( _
key <span style="color: blue">As</span> TKey, _
&lt;OutAttribute&gt; <span style="color: blue">ByRef</span> value <span style="color: blue">As</span> TValue _
) <span style="color: blue">As</span> <span style="color: blue">Boolean</span>
</pre>
</div>
<div class="libCScode" id="ctl00_rs1_mainContentContainer_ctl11_VisualBasicUsage">
<div class="CodeSnippetTitleBar">
<div class="CodeDisplayLanguage">Visual Basic（用法）</div>
</div>
<pre class="libCScode" id="ctl00_rs1_mainContentContainer_ctl11VisualBasicUsage" space="preserve"><span style="color: blue">Dim</span> instance <span style="color: blue">As</span> Dictionary(<span style="color: blue">Of</span> TKey, TValue)
<span style="color: blue">Dim</span> key <span style="color: blue">As</span> TKey
<span style="color: blue">Dim</span> value <span style="color: blue">As</span> TValue
<span style="color: blue">Dim</span> returnValue <span style="color: blue">As</span> <span style="color: blue">Boolean</span>
returnValue = instance.TryGetValue(key, value)
</pre>
</div>
<div class="libCScode" id="ctl00_rs1_mainContentContainer_ctl12_CSharp">
<div class="CodeSnippetTitleBar">
<div class="CodeDisplayLanguage">C#</div>
</div>
<pre class="libCScode" id="ctl00_rs1_mainContentContainer_ctl12CSharp" space="preserve"><span style="color: blue">public</span> <span style="color: blue">bool</span> TryGetValue (
TKey key,
out TValue value
)
</pre>
</div>
<div class="libCScode" id="ctl00_rs1_mainContentContainer_ctl13_ManagedCPlusPlus">
<div class="CodeSnippetTitleBar">
<div class="CodeDisplayLanguage">C++</div>
</div>
<pre class="libCScode" id="ctl00_rs1_mainContentContainer_ctl13ManagedCPlusPlus" space="preserve"><span style="color: blue">public</span>:
virtual <span style="color: blue">bool</span> TryGetValue (
TKey key,
[OutAttribute] TValue% value
) sealed
</pre>
</div>
<div class="libCScode" id="ctl00_rs1_mainContentContainer_ctl14_JSharp">
<div class="CodeSnippetTitleBar">
<div class="CodeDisplayLanguage">J#</div>
</div>
<pre class="libCScode" id="ctl00_rs1_mainContentContainer_ctl14JSharp" space="preserve"><span style="color: blue">public</span> final boolean TryGetValue (
TKey key,
<span style="color: green">/** @attribute OutAttribute() */</span> <span style="color: green">/** @ref */</span> TValue value
)
</pre>
</div>
<div class="libCScode" id="ctl00_rs1_mainContentContainer_ctl15_JScript">
<div class="CodeSnippetTitleBar">
<div class="CodeDisplayLanguage">JScript</div>
</div>
<pre class="libCScode" id="ctl00_rs1_mainContentContainer_ctl15JScript" space="preserve">JScript 不支持通过引用传递值类型参数。
</pre>
</div>
<p>
<h4 class="subHeading">参数</h4>
<dl paramname="key">
<dt><span class="parameter">key</span>
<dd>
<p>要获取的值的键。</p>
</dd></dl>
<dl paramname="value">
<dt><span class="parameter">value</span>
<dd>
<p>当此方法返回值时，如果找到该键，便会返回与指定的键相关联的值；否则，则会返回 <span class="parameter">value</span> 参数的类型默认值。该参数未经初始化即被传递。</p>
</dd></dl>
<p>
<p>
<h4 class="subHeading">返回值</h4>
如果 <a id="ctl00_rs1_mainContentContainer_ctl16" onclick="javascript:Track('ctl00_rs1_mainContentContainer_cpe251553_c|ctl00_rs1_mainContentContainer_ctl16',this);" href="http://msdn.microsoft.com/zh-cn/library/xfhwa508(VS.80).aspx">Dictionary</a> 包含具有指定键的元素，则为 <strong>true</strong>；否则为 <strong>false</strong>。 </div>
</div>
</div>
<div class="MTPS_CollapsibleRegion" id="ctl00_rs1_mainContentContainer_cpe251554">
<div class="CollapseRegionLink" id="ctl00_rs1_mainContentContainer_cpe251554_h"><img id="ctl00_rs1_mainContentContainer_cpe251554_i" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; vertical-align: middle; border-right-width: 0px" src="http://i.msdn.microsoft.com/Platform/Controls/CollapsibleArea/resources/minus.gif"  alt="" />&nbsp;异常 </div>
<div class="MTPS_CollapsibleSection" id="ctl00_rs1_mainContentContainer_cpe251554_c" style="display: block; overflow: visible; width: auto; height: auto">
<div class="MTPS_CollapsibleSection" id="" style="border-right: medium none; border-top: medium none; display: block; border-left: medium none; border-bottom: medium none"><a name="exceptionsToggle"></a>
<div class="tableSection">
<table width="100%">
    <tbody>
        <tr>
            <th align="left">异常类型</th>
            <th align="left">条件</th>
        </tr>
        <tr valign="top">
            <td>
            <p><a id="ctl00_rs1_mainContentContainer_ctl20" onclick="javascript:Track('ctl00_rs1_mainContentContainer_cpe251554_c|ctl00_rs1_mainContentContainer_ctl20',this);" href="http://msdn.microsoft.com/zh-cn/library/system.argumentnullexception(VS.80).aspx">ArgumentNullException</a></p>
            </td>
            <td>
            <p><span class="parameter">key</span> 为 空引用（在 Visual Basic 中为 Nothing）。</p>
            </td>
        </tr>
    </tbody>
</table>
</div>
</div>
</div>
</div>
<div class="MTPS_CollapsibleRegion" id="ctl00_rs1_mainContentContainer_cpe251555">
<div class="CollapseRegionLink" id="ctl00_rs1_mainContentContainer_cpe251555_h"><img id="ctl00_rs1_mainContentContainer_cpe251555_i" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; vertical-align: middle; border-right-width: 0px" src="http://i.msdn.microsoft.com/Platform/Controls/CollapsibleArea/resources/minus.gif"  alt="" />&nbsp;备注 </div>
<div class="MTPS_CollapsibleSection" id="ctl00_rs1_mainContentContainer_cpe251555_c" style="display: block; overflow: visible; width: auto; height: auto">
<div class="MTPS_CollapsibleSection" id="" style="border-right: medium none; border-top: medium none; display: block; border-left: medium none; border-bottom: medium none"><a name="remarksToggle"></a>
<p>此方法将 <a id="ctl00_rs1_mainContentContainer_ctl27" onclick="javascript:Track('ctl00_rs1_mainContentContainer_cpe251555_c|ctl00_rs1_mainContentContainer_ctl27',this);" href="http://msdn.microsoft.com/zh-cn/library/kw5aaea4(VS.80).aspx">ContainsKey</a> 方法与 <a id="ctl00_rs1_mainContentContainer_ctl28" onclick="javascript:Track('ctl00_rs1_mainContentContainer_cpe251555_c|ctl00_rs1_mainContentContainer_ctl28',this);" href="http://msdn.microsoft.com/zh-cn/library/9tee9ht2(VS.80).aspx">Item</a> 属性的功能结合在一起。</p>
<p>如果未找到键，<span class="parameter">value</span> 参数便为值类型 <span class="parameter">TValue</span> 获取适当的默认值；例如，为 integer 类型获取 0（零），为布尔值类型获取 <strong>false</strong>，为引用类型获取 空引用（在 Visual Basic 中为 Nothing）。</p>
<p>如果代码频繁尝试访问字典中不存在的键，则可使用 <strong>TryGetValue</strong> 方法。使用此方法比捕获 <strong>Item</strong> 属性引发的 <a id="ctl00_rs1_mainContentContainer_ctl29" onclick="javascript:Track('ctl00_rs1_mainContentContainer_cpe251555_c|ctl00_rs1_mainContentContainer_ctl29',this);" href="http://msdn.microsoft.com/zh-cn/library/system.collections.generic.keynotfoundexception(VS.80).aspx">KeyNotFoundException</a> 更为有效。</p>
<p>此方法的运算复杂度接近 O(1)。</p>
</div>
</div>
</div>
<div class="MTPS_CollapsibleRegion" id="ctl00_rs1_mainContentContainer_cpe251556">
<div class="CollapseRegionLink" id="ctl00_rs1_mainContentContainer_cpe251556_h"><img id="ctl00_rs1_mainContentContainer_cpe251556_i" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; vertical-align: middle; border-right-width: 0px" src="http://i.msdn.microsoft.com/Platform/Controls/CollapsibleArea/resources/minus.gif"  alt="" />&nbsp;示例 </div>
<div class="MTPS_CollapsibleSection" id="ctl00_rs1_mainContentContainer_cpe251556_c" style="display: block; overflow: visible; width: auto; height: auto">
<div class="MTPS_CollapsibleSection" id="" style="border-right: medium none; border-top: medium none; display: block; border-left: medium none; border-bottom: medium none"><a name="codeExampleToggle"></a>
<p>该示例演示当程序频繁尝试字典中不存在的键时，如何使用 <strong>TryGetValue</strong> 方法来作为检索值的一种更有效的方法。为了对比，该示例还演示 <strong>Item</strong> 属性（在 C# 中为索引器）在试图检索不存在的键时如何引发异常。</p>
<p>此代码示例摘自一个为 <strong>Dictionary</strong> 类提供的更大的示例。<br />
</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;When&nbsp;a&nbsp;program&nbsp;often&nbsp;has&nbsp;to&nbsp;try&nbsp;keys&nbsp;that&nbsp;turn&nbsp;out&nbsp;not&nbsp;to<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #008000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;be&nbsp;in&nbsp;the&nbsp;dictionary,&nbsp;TryGetValue&nbsp;can&nbsp;be&nbsp;a&nbsp;more&nbsp;efficient&nbsp;<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #008000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;way&nbsp;to&nbsp;retrieve&nbsp;values.</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #008000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;value&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">""</span><span style="color: #000000">;<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(openWith.TryGetValue(</span><span style="color: #800000">"</span><span style="color: #800000">tif</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #0000ff">out</span><span style="color: #000000">&nbsp;value))<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img id="Codehighlighter1_258_344_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_258_344_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_258_344_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_258_344_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_258_344_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_258_344_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_258_344_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_258_344_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_258_344_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_258_344_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</span><span style="color: #800000">"</span><span style="color: #800000">For&nbsp;key&nbsp;=&nbsp;\</span><span style="color: #800000">"</span><span style="color: #000000">tif\</span><span style="color: #800000">"</span><span style="color: #800000">,&nbsp;value&nbsp;=&nbsp;{0}.</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;value);<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img id="Codehighlighter1_366_441_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_366_441_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_366_441_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_366_441_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_366_441_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_366_441_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_366_441_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_366_441_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_366_441_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_366_441_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</span><span style="color: #800000">"</span><span style="color: #800000">Key&nbsp;=&nbsp;\</span><span style="color: #800000">"</span><span style="color: #000000">tif\</span><span style="color: #800000">"</span><span style="color: #800000">&nbsp;is&nbsp;not&nbsp;found.</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&lt;</span><span style="color: #000000">br&nbsp;</span><span style="color: #000000">/&gt;&lt;</span><span style="color: #000000">span&nbsp;space</span><span style="color: #000000">=</span><span style="color: #800000">"</span><span style="color: #800000">preserve</span><span style="color: #800000">"</span><span style="color: #000000">&gt;</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span style="color: #000000">&lt;/</span><span style="color: #000000">span</span><span style="color: #000000">&gt;&lt;</span><span style="color: #000000">br&nbsp;</span><span style="color: #000000">/&gt;</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;The&nbsp;indexer&nbsp;throws&nbsp;an&nbsp;exception&nbsp;if&nbsp;the&nbsp;requested&nbsp;key&nbsp;is<br />
</span><span style="color: #008080">14</span><span style="color: #008000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;not&nbsp;in&nbsp;the&nbsp;dictionary.</span><span style="color: #008000"><br />
</span><span style="color: #008080">15</span><span style="color: #008000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">try</span><span style="color: #000000"><br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img id="Codehighlighter1_608_721_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_608_721_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_608_721_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_608_721_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_608_721_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_608_721_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_608_721_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_608_721_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_608_721_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_608_721_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</span><span style="color: #800000">"</span><span style="color: #800000">For&nbsp;key&nbsp;=&nbsp;\</span><span style="color: #800000">"</span><span style="color: #000000">tif\</span><span style="color: #800000">"</span><span style="color: #800000">,&nbsp;value&nbsp;=&nbsp;{0}.</span><span style="color: #800000">"</span><span style="color: #000000">,&nbsp;<br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;openWith[</span><span style="color: #800000">"</span><span style="color: #800000">tif</span><span style="color: #800000">"</span><span style="color: #000000">]);<br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(KeyNotFoundException)<br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img id="Codehighlighter1_767_842_Open_Image" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_767_842_Open_Text').style.display='none'; document.getElementById('Codehighlighter1_767_842_Closed_Image').style.display='inline'; document.getElementById('Codehighlighter1_767_842_Closed_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_767_842_Closed_Image" style="display: none" onclick="this.style.display='none'; document.getElementById('Codehighlighter1_767_842_Closed_Text').style.display='none'; document.getElementById('Codehighlighter1_767_842_Open_Image').style.display='inline'; document.getElementById('Codehighlighter1_767_842_Open_Text').style.display='inline';" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_767_842_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_767_842_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</span><span style="color: #800000">"</span><span style="color: #800000">Key&nbsp;=&nbsp;\</span><span style="color: #800000">"</span><span style="color: #000000">tif\</span><span style="color: #800000">"</span><span style="color: #800000">&nbsp;is&nbsp;not&nbsp;found.</span><span style="color: #800000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">24</span><span style="color: #000000"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"  alt="" /></span></div>
</div>
</div>
</div>
</div>
</div>
</font>
<img src ="http://www.cnblogs.com/ilovexiao/aggbug/1216796.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41959/" target="_blank">[新闻]苹果已然取代微软地位成行业众矢之的</a>]]></description></item><item><title>今天真是不在状态的一天，又是一个书写的错误（本文仅为提醒自己，你可以选择跳过）</title><link>http://www.cnblogs.com/ilovexiao/archive/2008/05/13/1195990.html</link><dc:creator>何随风</dc:creator><author>何随风</author><pubDate>Tue, 13 May 2008 15:44:00 GMT</pubDate><guid>http://www.cnblogs.com/ilovexiao/archive/2008/05/13/1195990.html</guid><wfw:comment>http://www.cnblogs.com/ilovexiao/comments/1195990.html</wfw:comment><comments>http://www.cnblogs.com/ilovexiao/archive/2008/05/13/1195990.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/ilovexiao/comments/commentRss/1195990.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ilovexiao/services/trackbacks/1195990.html</trackback:ping><description><![CDATA[事儿是这样的：<br />
前几天用<font style="background-color: #fffbf0" face="Verdana">netTiers2.2.0</font>生成了一个SQL2000下使用的CS文件。<br />
今天要把它们全都转为Oracle的。搞得我又得重新建表，写存储过程。。<br />
逐个的更改CS文件里的存储过程名。。 <br />
到最后使用object<font style="background-color: #fffbf0" face="Verdana">source进行数据绑定时,列表和修改页的显示都是正常的,<br />
可是就是不能进行修改和删除操作.<br />
最后只能Debug--&gt;F11逐步逐步的试,花了一个晚上的时间终于发现,原来是大小写的问题.<br />
以后要细心细心再细心..<br />
<br />
注:<font style="background-color: #fffbf0" face="Verdana">netTiers2.2.0</font>生成的代码,绑定数据时无论大小写都可以显示.但,添加,删除,修改时就要区分大小写了.<br />
<br />
</font>
<img src ="http://www.cnblogs.com/ilovexiao/aggbug/1195990.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41958/" target="_blank">[新闻]Intel 收购 Poky Linux ,为 MID 注入新的动力</a>]]></description></item><item><title>ORA-06550: 第 1 行, 第 35 列: PLS-00103: 出现符号 "PARKID"在需要下列之一时：:= . ( @ % ;符号 ":=" 被替换为 "PARKID" 后继续。</title><link>http://www.cnblogs.com/ilovexiao/archive/2008/05/13/1195483.html</link><dc:creator>何随风</dc:creator><author>何随风</author><pubDate>Tue, 13 May 2008 09:19:00 GMT</pubDate><guid>http://www.cnblogs.com/ilovexiao/archive/2008/05/13/1195483.html</guid><wfw:comment>http://www.cnblogs.com/ilovexiao/comments/1195483.html</wfw:comment><comments>http://www.cnblogs.com/ilovexiao/archive/2008/05/13/1195483.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/ilovexiao/comments/commentRss/1195483.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ilovexiao/services/trackbacks/1195483.html</trackback:ping><description><![CDATA[今天写一个操作Oracle存储过程的类的时候，突然发现这么一个错误。<br />
<br />
<style>
body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;}
p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px}
b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px}
H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red }
H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon }
pre {font-family:"Lucida Console";font-size: .9em}
.marker {font-weight: bold; color: black;text-decoration: none;}
.version {color: gray;}
.error {margin-bottom: 10px;}
.expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; }
</style>
<span>
<h1>&#8220;/&#8221;应用程序中的服务器错误。
<hr width="100%" color="silver" size="1" />
</h1>
<h2><em>ORA-06550: 第 1 行, 第 35 列: <br />
PLS-00103: 出现符号 "PARKID"在需要下列之一时：<br />
:= . ( @ % ;<br />
符号 ":=" 被替换为 "PARKID" 后继续。<br />
</em></h2>
</span><font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif "><strong>说明: </strong>执行当前 Web 请求期间，出现未处理的异常。请检查堆栈跟踪信息，以了解有关该错误以及代码中导致错误的出处的详细信息。 <br />
<br />
<strong>异常详细信息: </strong>System.Data.OracleClient.OracleException: ORA-06550: 第 1 行, 第 35 列: <br />
PLS-00103: 出现符号 "PARKID"在需要下列之一时：<br />
:= . ( @ % ;<br />
符号 ":=" 被替换为 "PARKID" 后继续。<br />
<br />
<br />
<strong>源错误:</strong> <br />
<br />
<table width="100%" bgcolor="#ffffcc">
    <tbody>
        <tr>
            <td><code>
            <pre>行 472:    results = database.ExecuteReader(dbCommand);
            行 473:   }
            <font color="red">行 474:   catch (Exception ex /*ex*/)
            </font>行 475:   {
            行 476:    //PSB 2006-05-26: should we use EntLib ExceptionPolicy.HandleException?</pre>
            </code></td>
        </tr>
    </tbody>
</table>
<br />
<strong>源文件: </strong>E:\NewSite\srcTmp\D3Map.Data\Utility.cs<strong> &nbsp;&nbsp; 行: </strong>474 <br />
<br />
<strong>堆栈跟踪:</strong> <br />
<br />
<table width="100%" bgcolor="#ffffcc">
    <tbody>
        <tr>
            <td><code>
            <pre>[OracleException (0x80131938): ORA-06550: 第 1 行, 第 35 列:
            PLS-00103: 出现符号 "PARKID"在需要下列之一时：
            := . ( @ % ;
            符号 ":=" 被替换为 "PARKID" 后继续。
            ]
            System.Data.OracleClient.OracleConnection.CheckError(OciErrorHandle errorHandle, Int32 rc) +205
            System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, Boolean needRowid, OciRowidDescriptor&amp; rowidDescriptor, ArrayList&amp; resultParameterOrdinals) +1024
            System.Data.OracleClient.OracleCommand.Execute(OciStatementHandle statementHandle, CommandBehavior behavior, ArrayList&amp; resultParameterOrdinals) +25
            System.Data.OracleClient.OracleCommand.ExecuteReader(CommandBehavior behavior) +138
            System.Data.OracleClient.OracleCommand.ExecuteDbDataReader(CommandBehavior behavior) +4
            System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior) +7
            Microsoft.Practices.EnterpriseLibrary.Data.Database.DoExecuteReader(DbCommand command, CommandBehavior cmdBehavior) +198
            Microsoft.Practices.EnterpriseLibrary.Data.Database.ExecuteReader(DbCommand command) +111
            Microsoft.Practices.EnterpriseLibrary.Data.Oracle.OracleDatabase.ExecuteReader(DbCommand command) +74
            D3Map.Data.Utility.ExecuteReader(Database database, DbCommand dbCommand) in E:\NewSite\srcTmp\D3Map.Data\Utility.cs:474
            D3Map.Data.SqlClient.SqlMapParkProviderBase.GetByParkId(TransactionManager transactionManager, Int32 parkId, Int32 start, Int32 pageLength, Int32&amp; count) in E:\NewSite\srcTmp\D3Map.Data.SqlClient\SqlMapParkProviderBase.generated.cs:586
            D3Map.Data.Bases.MapParkProviderBaseCore.GetByParkId(Int32 parkId) in E:\NewSite\srcTmp\D3Map.Data\Bases\MapParkProviderBase.generatedCore.cs:86
            test.TestMapPark() in e:\NewSite\srcTmp\D3Map.Website\test.aspx.cs:126
            test.Page_Load(Object sender, EventArgs e) in e:\NewSite\srcTmp\D3Map.Website\test.aspx.cs:19
            System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15
            System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +34
            System.Web.UI.Control.OnLoad(EventArgs e) +99
            System.Web.UI.Control.LoadRecursive() +47
            System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1061
            </pre>
            </code></td>
        </tr>
    </tbody>
</table>
<br />
<hr width="100%" color="silver" size="1" />
<strong>版本信息:</strong>&nbsp;Microsoft .NET Framework 版本:2.0.50727.42; ASP.NET 版本:2.0.50727.42 </font><br />
<br />
<br />
在网上查了好久， 都没能查到原因，<br />
最后做了一次彻底的检查，才发现我在存储过程名&#8220;GetByPARKID&#8221;之间多加了一个空格，写成了&#8220;GetBy PARKID&#8221;。<br />
在此做一个检讨。以后写代码要再认真一些。以免再次出现这种情况。
<img src ="http://www.cnblogs.com/ilovexiao/aggbug/1195483.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41958/" target="_blank">[新闻]Intel 收购 Poky Linux ,为 MID 注入新的动力</a>]]></description></item><item><title>兄弟，你有弄过TestDriven.NET吗？</title><link>http://www.cnblogs.com/ilovexiao/archive/2008/05/13/1195186.html</link><dc:creator>何随风</dc:creator><author>何随风</author><pubDate>Tue, 13 May 2008 06:40:00 GMT</pubDate><guid>http://www.cnblogs.com/ilovexiao/archive/2008/05/13/1195186.html</guid><wfw:comment>http://www.cnblogs.com/ilovexiao/comments/1195186.html</wfw:comment><comments>http://www.cnblogs.com/ilovexiao/archive/2008/05/13/1195186.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/ilovexiao/comments/commentRss/1195186.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ilovexiao/services/trackbacks/1195186.html</trackback:ping><description><![CDATA[摘要: 写程序也有两年的时间了。。可是一直没有在工作中应用到测试。<br>测试的书倒的看了一些，可一到工作中就不行了。有时候的无从下手，有时候是时间紧（都是借口！！！）。<br>今天在园子里看到一篇文章《你学会测试了吗(1)：推荐工具 》里说到了一个工具，不用说就是标题上写的那个啦。<br>今天开始试试。（以前都是把事儿推到明天，现在要从今天开始。）&nbsp;&nbsp;<a href='http://www.cnblogs.com/ilovexiao/archive/2008/05/13/1195186.html'>阅读全文</a><img src ="http://www.cnblogs.com/ilovexiao/aggbug/1195186.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41958/" target="_blank">[新闻]Intel 收购 Poky Linux ,为 MID 注入新的动力</a>]]></description></item><item><title>深夜，在这个已不再喧嚣的城市中寻找到一片属于自己的宁静，仰望那片属于自己的星空…… </title><link>http://www.cnblogs.com/ilovexiao/archive/2008/05/03/1180963.html</link><dc:creator>何随风</dc:creator><author>何随风</author><pubDate>Sat, 03 May 2008 15:05:00 GMT</pubDate><guid>http://www.cnblogs.com/ilovexiao/archive/2008/05/03/1180963.html</guid><wfw:comment>http://www.cnblogs.com/ilovexiao/comments/1180963.html</wfw:comment><comments>http://www.cnblogs.com/ilovexiao/archive/2008/05/03/1180963.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/ilovexiao/comments/commentRss/1180963.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ilovexiao/services/trackbacks/1180963.html</trackback:ping><description><![CDATA[深夜，在这个已不再喧嚣的城市中寻找到一片属于自己的宁静，仰望那片属于自己的星空&#8230;&#8230; 
<img src ="http://www.cnblogs.com/ilovexiao/aggbug/1180963.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41957/" target="_blank">[新闻]雅虎将关闭社交网站Mash</a>]]></description></item><item><title>当人们仰望天空的时候，才有了翱翔的愿望；当人们仰望星空的时候，才有了远航的渴望。 </title><link>http://www.cnblogs.com/ilovexiao/archive/2008/05/03/1180580.html</link><dc:creator>何随风</dc:creator><author>何随风</author><pubDate>Sat, 03 May 2008 12:42:00 GMT</pubDate><guid>http://www.cnblogs.com/ilovexiao/archive/2008/05/03/1180580.html</guid><wfw:comment>http://www.cnblogs.com/ilovexiao/comments/1180580.html</wfw:comment><comments>http://www.cnblogs.com/ilovexiao/archive/2008/05/03/1180580.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/ilovexiao/comments/commentRss/1180580.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ilovexiao/services/trackbacks/1180580.html</trackback:ping><description><![CDATA[摘要: 当人们仰望天空的时候，才有了翱翔的愿望；当人们仰望星空的时候，才有了远航的渴望。 &nbsp;&nbsp;<a href='http://www.cnblogs.com/ilovexiao/archive/2008/05/03/1180580.html'>阅读全文</a><img src ="http://www.cnblogs.com/ilovexiao/aggbug/1180580.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41957/" target="_blank">[新闻]雅虎将关闭社交网站Mash</a>]]></description></item><item><title>在建立与服务器的连接时出错。在连接到   SQL   Server   2005   时，在默认的设置下   SQL   Server   不允许进行远程连接可能会导致此失败。   (provider:   命名管道提供程序,   error:   40   -   无法打开到   SQL   Server   的连接)   </title><link>http://www.cnblogs.com/ilovexiao/archive/2007/12/25/1013578.html</link><dc:creator>何随风</dc:creator><author>何随风</author><pubDate>Tue, 25 Dec 2007 01:48:00 GMT</pubDate><guid>http://www.cnblogs.com/ilovexiao/archive/2007/12/25/1013578.html</guid><wfw:comment>http://www.cnblogs.com/ilovexiao/comments/1013578.html</wfw:comment><comments>http://www.cnblogs.com/ilovexiao/archive/2007/12/25/1013578.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnblogs.com/ilovexiao/comments/commentRss/1013578.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ilovexiao/services/trackbacks/1013578.html</trackback:ping><description><![CDATA[今天做个数据库的远程连接出错,上网查了一下...问题解决了...方法如下:<br />
<br />
解决方法：开始-&gt; 所有程序-&gt; Ms &nbsp; Sql &nbsp; Server-&gt; 配置工具-&gt; sql &nbsp; server外围应用配置器-&gt; 服务和连接的外围应用配置器-&gt; 打开MSSQLSERVER节点下的Database &nbsp; Engine &nbsp; 节点,先择 "远程连接 ",接下建议选择 "同时使用TCP/IP和named &nbsp; pipes ",确定后,重启数据库服务就可以了.
<img src ="http://www.cnblogs.com/ilovexiao/aggbug/1013578.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41956/" target="_blank">[新闻]中国互联网战争局势图</a>]]></description></item><item><title>在C#程序中实现插件架构</title><link>http://www.cnblogs.com/ilovexiao/archive/2007/12/01/979375.html</link><dc:creator>何随风</dc:creator><author>何随风</author><pubDate>Sat, 01 Dec 2007 06:28:00 GMT</pubDate><guid>http://www.cnblogs.com/ilovexiao/archive/2007/12/01/979375.html</guid><wfw:comment>http://www.cnblogs.com/ilovexiao/comments/979375.html</wfw:comment><comments>http://www.cnblogs.com/ilovexiao/archive/2007/12/01/979375.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/ilovexiao/comments/commentRss/979375.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ilovexiao/services/trackbacks/979375.html</trackback:ping><description><![CDATA[<p>　　在.NET框架下的C#语言，和其他.NET语言一样提供了很多强大的特性和机制.其中一些是全新的，而有些则是从以前的语言和平台上照搬过来的。然而，这种巧妙的结合产生了一些有趣的方法可以用来解决我们的问题。这篇文章将讲述如何利用这些奇妙的特性，用插件(plug-ins)机制建立可扩展的解决方案。后面也将提供一个简要的例子，你甚至可以用这个东西来替换那些已经在很多系统中广泛使用的独立的程序。在一个系统中,可能有很多程序经常需要进行数据处理。可能其中有一个程序用于处理雇员的信息,而另一个用来管理客户关系。在大多数情况下，系统总是被设计为很多个独立的程序，他们之间很少有交互,经常使用复制代码的办法来共享.而实际上这样的情况可以把那些程序设计为插件，再用一个单一的程序来管理这些插件。这种设计可以让我们更好的在不同的解决方案中共享公用的方法,提供统一的感观。 <br />
<br />
　　图片一是一个例子程序的截图.用户界面和其他常见的程序没有什么不同.整个窗体被垂直的分割为两块.左边的窗格是个树形菜单,用于显示插件列表,在每个插件的分支下面,列出了这个插件所管理的数据.而右边的窗格则用于编辑左边被选中的插件的数据.各个插件提供各自的编辑数据的界面.图片一展示了一个精巧的工作区.<br />
<br />
　　开始<br />
<br />
　　那么,主程序必须能够加载插件,然后和这些插件进行通信,这样才能实现我们的设计.所有这些的实现可以有很多不同的方法,仅取决于开发者选择的语言和平台.如果选择的是C#和.NET,那么反射(reflection)机制可以用来加载插件,并且其接口和抽象类可以用于和插件通信.<br />
<br />
　　为了更好的理解主程序和插件之间的通信,可以先了解一下设计模式.设计模式最早由Erich Gamma提出,它利用架构和对象思想来实现通用的通信模型.不管组件是否具有不同的输入和输出,只要他们有相似的结构.设计模式可以帮助开发者利用广受证明的面向对象理论来解决问题.事实上它就是描述解决方案的语言,而不用管问题的具体细节或者编程语言的细节.设计模式策略的关键点在于如何把整个解决方案根据功能来分解,这种分解是通过把主程序的不同功能分开执行而完成的.这样主程序和子程序之间的通信可以通过设计良好的接口来完成.通过这种分解我们立即可以得到这两个好处:第一,软件项目被分成较小的不相干的单位,工作流程的设计可以更容易,而较小的代码片断意味着代码更容易建立和维护.第二个好处在于改变程序行为的时候并不会关系到主程序的运行,主程序不用关心子程序如何,他们之间只要有通用的通讯机制就足够了.<br />
<br />
　　建立接口<br />
<br />
　　在C#程序中,接口是用来定义一个类的功能的.接口定义了预期的方法,属性,事件信息.为了使用接口,每个具体的函数必须严格按照接口的定义完成所描述的功能.列表一展示了上面例子程序的接口:IPlug.这个接口定义了四个方法:GetData,GetEditControl,Save和Print.这四个定义并没有描述具体是怎么完成的,但是他们保证了这个类支持IPlug接口,也就是保证支持这些方法的调用.<br />
<br />
　　定制属性<br />
<br />
　　在查看代码之前,讨论总是先得转移到属性定制上面.属性定制是.NET提供的一个非常棒的新特性之一,属性对于所有的编程语言都是一种通用的结构.举个例子,一个函数用于标识可访问权限的public,private,或者protect标志就是这个函数的一个属性.属性定制之所以如此让人兴奋,那是因为编程人员将不再只能从语言本身提供的有限的属性集中选择.一个定制的属性其实也是一个类,它从System.Attribute继承,它的代码被允许是自我描述的.属性定制可以应用于绝大多数结构中,包括C#里面的类,方法,事件,域和属性等等.示例代码片断定义了两个定制的属性:PlugDisplayNameAttribute和PlugDescriptionAttribute,所有的插件内部的类必须支持这两个属性.列表二是用于定义PlugDisplayNameAttribute的类.这个属性用于显示插件节点的内容.在程序运行的时候,主程序将可以利用反射(reflection)来取得属性值.<br />
<br />
<div></div>
<br />
<br />
　　插件(Plug-Ins)<br />
<br />
　　上面的示例程序包括了两个插件的执行.这些插件在EmployeePlug.cs和CustomerPlug.cs中定义.列表三展示了EmployeePlug类的部分定义.下面是一些关键点.<br />
<br />
　　1.这个类实现了IPlug接口.由于主程序根本不会知道插件内部的类是如何定义的,这非常重要,主程序需要使用IPlug接口和各个插件通信.这种设计利用了面向对象概念里面的"多态性".多态性允许运行时,可以通过指向基类的引用,来调用实现派生类中的方法.<br />
<br />
　　2.这个类被两个属性标识,这样主程序可以判断这个插件是不是有效的.在C#中,要给一个类标识一个属性,你得在类的定义之前声明属性,内容附在括号内.<br />
<br />
　　3.简明起见,例子只是使用了直接写入代码的数据.而如果这个插件是个正式的产品,那么数据总是应该放在数据库中或者文件中,各自所有的数据都应该仅仅由插件本身来管理.EmployeePlug类的数据在这里用EmployeeData对象来存储,那也是一个类型并且实现了IPlugData接口.IPlugData接口在IPlugData.cs中定义,它提供了最基础的数据交换功能,用于主程序和插件之间的通讯.所有支持IPlugData接口的对象在下层数据变化的时候将提供一个通知.这个通知实际上就是DataChanged事件的发生.<br />
<br />
　　4.当主程序需要显示某个插件所含数据列表的时候,它会调用GetData方法.这个方法返回IPlugData对象的一个数组.这样主程序就可以对数组中的每个对象使用ToString方法得到数据以建立树的各个节点.ToString方法是EmployeeData类的一个重载,用于显示雇员的名字.<br />
<br />
　　5.IPlug接口也定义了Save和Print方法.定义这两个方法的目的在于当有需要打印或者保存数据的时候,要通知一个插件.EmployeePlug类就是用于实现打印和保存数据的功能的.在使用Save方法的时候,需要保存数据的位置将会在方法调用的时候提供.这里假设主程序会向用户查询路径等信息.路径信息的查询是主程序提供给各个插件的服务.对于Print方法,主程序将把选项和内容传递到System.Drawing.Printing.PrintDocument类的实例.这两种情况下,和用户的交互操作都是一致的由主程序提供的.<br />
<br />
　　反射(Reflection)<br />
<br />
　　在一个插件定义好之后,下一步要做的就是查看主程序是怎么加载插件的.为了实现这个目标,主程序使用了反射机制.反射是.NET中用于运行时查看类型信息的.在反射机制的帮助下,类型信息将被加载和查看.这样就可以通过检查这个类型以判断插件是否有效.如果类型通过了检查,那么插件就可以被添加到主程序的界面中,就可以被用户操作.<br />
<br />
　　示例程序使用了.NET框架的三个内置类来使用反射:System.Reflection.Assembly,System.Type,和System.Activator.<br />
<br />
　　System.Reflection.Assembly类描述了.NET的程序集.在.NET中,程序集是配置单元.对于一个典型的Windows程序,程序集被配置为单一的Win32可执行文件,并且带有特定的附加信息,使之适应.NET运行环境.程序集也可以配置为Win32的DLL(动态链接库),同样需要带有.NET需要的附加信息.System.Reflection.Assembly类可以在运行的时候取得程序集的信息.这些信息包括程序集包含的类型信息.<br />
<br />
　　System.Type类描述了类型定义.一个类型声明可以是一个类,接口,数组,结构体,或者枚举.在加载了一个类之后,System.Type类可以被用于枚举该类支持的方法,属性,事件和接口.<br />
<br />
　　System.Activator类用于创建一个类的实例.<br />
<br />
　　加载插件<br />
<br />
　　列表四展示了LoadPlugs方法.LoadPlugs方法在HostForm.cs中定义,是HostForm类的一个private的非静态方法.LoadPlugs方法使用.NET的反射机制来加载可用的插件文件,并且验证它们是否符合被主程序使用的要求,然后把它们添加到主程序的树形显示区中.这个方法包含了下面几个步骤:<br />
<br />
　　1.通过使用System.IO.Directory类,我们的代码可以用通配符来查找所有的以.plug为扩展名的文件.而Directory类的静态方法GetFiles能够返回一个System.String类型的数组,以得到每个符合要求的文件的物理路径.<br />
　　<br />
　　2.在得到路径字符串数组之后,就可以开始把文件加载到System.Reflection.Assembly实例中了.建立Asdsembly对象的代码使用了try/catch代码块,这样如果某个文件并不是一个有效地.NET程序集,就会抛出异常,程序此时将弹出一个MessageBox对话框,告诉用户无法加载该文件.循环一直进行直到所有文件都已遍历完成.<br />
<br />
　　3.在一个程序集加载之后,代码将遍历所有可访问到的类型信息,检查是否支持了HostCommon.IPlug接口.<br />
<br />
　　4.如果所有类型都支持HostCommon.IPlug接口,那么代码继续验证这些类型,检查是否支持那些已预先为插件定义好的属性.如果没有支持,那么一个HostCommon.PlugNotValidException类型的异常将会被抛出,同样,主程序将会弹出一个MessageBox,告诉用户出错的具体信息.循环一直进行直到所有文件都已遍历完成.<br />
<br />
　　5.最后,如果这些类型支持HostCommon.IPlug接口,也已定义了所有需要定义的属性,那么它将被包装为一个PlugTreeNode实例.这个实例就会被添加到主程序的树形显示区.<br />
<br />
　　实现<br />
<br />
　　主程序框架被设计为两个程序集.第一个程序集是Host.exe,它提供了主程序的Windows窗体界面.第二个程序集是HostCommon.dll,它提供了主程序和插件之间进行通信所需的所有类型定义.比如,IPlug接口就是在HostCommon.dll里面配置的,这样它可以被主程序和插件等价的访问.这两个程序集在一个文件夹内,同样的,附加的作为插件的程序集也需要被配置在一起.那些程序集被配置在plugs文件夹内(主程序目录的一个子文件夹).EmployeePlug类在Employee.plug程序集中定义,而CustomerPlug类在Customer.plug程序集中定义.这个例子指定插件文件以.plug为扩展名.事实上这些插件就是个普通的.NET类库文件,只是通常库文件使用.dll扩展名,这里用.plug罢了.特殊的扩展名对于程序运行是完全没有影响的,但是它可以让用户更明确的知道这是个插件文件.<br />
<br />
　　设计的比较<br />
<br />
　　并不是一定要像例子程序这样设计才算正确的.比如,在开发一个带有插件的C#程序时,并不一定需要使用属性.例子里使用了两个自定义的属性,其实也可以新定义两个IPlug接口的参数来实现.这里选择用属性,是因为插件的名字和它的描述在本质上确实就是一个事物的属性,符合规范.当然了,使用属性会造成主程序需要更多的关于反射的代码.对于不同的需求,设计者总是需要做出合理的决定.<br />
<br />
　　总结<br />
<br />
　　示例程序被设计为尽量的简单,以帮助理解主程序和插件之间的通信.在实际做产品的时候,可以做很多的改进以满足实用要求.比如:<br />
<br />
　　1.通过对IPlug接口增加更多的方法,属性,事件,可以增加主程序和插件之间的通信点.两者间的更多的交互操作使得插件可以做更多的事情.<br />
<br />
　　2.可以允许用户主动选择需要加载的插件<br />
图片一:<br />
<img height="350" alt="" src="http://www.cnblogs.com/images/cnblogs_com/ilovexiao/116766854439083556.jpg" width="398" border="0" /><br />
列表一:The IPlug interface<br />
<br />
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">interface</span><span style="color: #000000">&nbsp;IPlug<br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img id="Codehighlighter1_23_160_Open_Image" onclick="this.style.display='none'; Codehighlighter1_23_160_Open_Text.style.display='none'; Codehighlighter1_23_160_Closed_Image.style.display='inline'; Codehighlighter1_23_160_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_23_160_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_23_160_Closed_Text.style.display='none'; Codehighlighter1_23_160_Open_Image.style.display='inline'; Codehighlighter1_23_160_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_23_160_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_23_160_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />IPlugData[]&nbsp;GetData();<br />
</span><span style="color: #008080">4</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />PlugDataEditControl&nbsp;GetEditControl(IPlugData&nbsp;Data);<br />
</span><span style="color: #008080">5</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;Save(</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;Path);<br />
</span><span style="color: #008080">6</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;Print(PrintDocument&nbsp;Document);<br />
</span><span style="color: #008080">7</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span></div>
列表二:The PlugDisplayNameAttribute class definition
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">[AttributeUsage(AttributeTargets.Class)]<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;PlugDisplayNameAttribute&nbsp;:&nbsp;System.Attribute<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img id="Codehighlighter1_98_288_Open_Image" onclick="this.style.display='none'; Codehighlighter1_98_288_Open_Text.style.display='none'; Codehighlighter1_98_288_Closed_Image.style.display='inline'; Codehighlighter1_98_288_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_98_288_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_98_288_Closed_Text.style.display='none'; Codehighlighter1_98_288_Open_Image.style.display='inline'; Codehighlighter1_98_288_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_98_288_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_98_288_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;_displayName;<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;PlugDisplayNameAttribute(</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;DisplayName)&nbsp;:&nbsp;</span><span style="color: #0000ff">base</span><span style="color: #000000">()<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img id="Codehighlighter1_191_227_Open_Image" onclick="this.style.display='none'; Codehighlighter1_191_227_Open_Text.style.display='none'; Codehighlighter1_191_227_Closed_Image.style.display='inline'; Codehighlighter1_191_227_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_191_227_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_191_227_Closed_Text.style.display='none'; Codehighlighter1_191_227_Open_Image.style.display='inline'; Codehighlighter1_191_227_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_191_227_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_191_227_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />_displayName</span><span style="color: #000000">=</span><span style="color: #000000">DisplayName;<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">return</span><span style="color: #000000">;<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">override</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;ToString()<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img id="Codehighlighter1_264_287_Open_Image" onclick="this.style.display='none'; Codehighlighter1_264_287_Open_Text.style.display='none'; Codehighlighter1_264_287_Closed_Image.style.display='inline'; Codehighlighter1_264_287_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_264_287_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_264_287_Closed_Text.style.display='none'; Codehighlighter1_264_287_Open_Image.style.display='inline'; Codehighlighter1_264_287_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_264_287_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_264_287_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;_displayName;<br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span></div>
</span>列表三:A partial listing of the EmployeePlug class definition
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">[PlugDisplayName(</span><span style="color: #000000">"</span><span style="color: #000000">Employees</span><span style="color: #000000">"</span><span style="color: #000000">)]<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" />[PlugDescription(</span><span style="color: #000000">"</span><span style="color: #000000">This&nbsp;plug&nbsp;is&nbsp;for&nbsp;managing&nbsp;employee&nbsp;data</span><span style="color: #000000">"</span><span style="color: #000000">)]<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;EmployeePlug&nbsp;:&nbsp;System.Object,&nbsp;IPlug<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img id="Codehighlighter1_141_593_Open_Image" onclick="this.style.display='none'; Codehighlighter1_141_593_Open_Text.style.display='none'; Codehighlighter1_141_593_Closed_Image.style.display='inline'; Codehighlighter1_141_593_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_141_593_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_141_593_Closed_Text.style.display='none'; Codehighlighter1_141_593_Open_Image.style.display='inline'; Codehighlighter1_141_593_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_141_593_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_141_593_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;IPlugData[]&nbsp;GetData()<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img id="Codehighlighter1_172_344_Open_Image" onclick="this.style.display='none'; Codehighlighter1_172_344_Open_Text.style.display='none'; Codehighlighter1_172_344_Closed_Image.style.display='inline'; Codehighlighter1_172_344_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_172_344_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_172_344_Closed_Text.style.display='none'; Codehighlighter1_172_344_Open_Image.style.display='inline'; Codehighlighter1_172_344_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_172_344_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_172_344_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />IPlugData[]&nbsp;data&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;EmployeeData[]<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img id="Codehighlighter1_212_327_Open_Image" onclick="this.style.display='none'; Codehighlighter1_212_327_Open_Text.style.display='none'; Codehighlighter1_212_327_Closed_Image.style.display='inline'; Codehighlighter1_212_327_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_212_327_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_212_327_Closed_Text.style.display='none'; Codehighlighter1_212_327_Open_Image.style.display='inline'; Codehighlighter1_212_327_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_212_327_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_212_327_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;EmployeeData(</span><span style="color: #000000">"</span><span style="color: #000000">Jerry</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Seinfeld</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />,</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;EmployeeData(</span><span style="color: #000000">"</span><span style="color: #000000">Bill</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Cosby</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />,</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;EmployeeData(</span><span style="color: #000000">"</span><span style="color: #000000">Martin</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Lawrence</span><span style="color: #000000">"</span><span style="color: #000000">)<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000">;<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;data;<br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;PlugDataEditControl&nbsp;GetEditControl(IPlugData&nbsp;Data)<br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img id="Codehighlighter1_405_455_Open_Image" onclick="this.style.display='none'; Codehighlighter1_405_455_Open_Text.style.display='none'; Codehighlighter1_405_455_Closed_Image.style.display='inline'; Codehighlighter1_405_455_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_405_455_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_405_455_Closed_Text.style.display='none'; Codehighlighter1_405_455_Open_Image.style.display='inline'; Codehighlighter1_405_455_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_405_455_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_405_455_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;EmployeeControl((EmployeeData)Data);<br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;Save(</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;Path)<br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img id="Codehighlighter1_488_517_Open_Image" onclick="this.style.display='none'; Codehighlighter1_488_517_Open_Text.style.display='none'; Codehighlighter1_488_517_Closed_Image.style.display='inline'; Codehighlighter1_488_517_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_488_517_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_488_517_Closed_Text.style.display='none'; Codehighlighter1_488_517_Open_Image.style.display='inline'; Codehighlighter1_488_517_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_488_517_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_488_517_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">24</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">implementation&nbsp;not&nbsp;shown</span><span style="color: #008000"><br />
</span><span style="color: #008080">25</span><span style="color: #008000"><img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" /></span><span style="color: #000000">}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">26</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">27</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;Print(PrintDocument&nbsp;Document)<br />
</span><span style="color: #008080">28</span><span style="color: #000000"><img id="Codehighlighter1_562_591_Open_Image" onclick="this.style.display='none'; Codehighlighter1_562_591_Open_Text.style.display='none'; Codehighlighter1_562_591_Closed_Image.style.display='inline'; Codehighlighter1_562_591_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_562_591_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_562_591_Closed_Text.style.display='none'; Codehighlighter1_562_591_Open_Image.style.display='inline'; Codehighlighter1_562_591_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_562_591_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_562_591_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">29</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">implementation&nbsp;not&nbsp;shown</span><span style="color: #008000"><br />
</span><span style="color: #008080">30</span><span style="color: #008000"><img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" /></span><span style="color: #000000">}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">31</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span></div>
列表四:The method LoadPlugs
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;LoadPlugs()<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #000000"><img id="Codehighlighter1_25_706_Open_Image" onclick="this.style.display='none'; Codehighlighter1_25_706_Open_Text.style.display='none'; Codehighlighter1_25_706_Closed_Image.style.display='inline'; Codehighlighter1_25_706_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_25_706_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_25_706_Closed_Text.style.display='none'; Codehighlighter1_25_706_Open_Image.style.display='inline'; Codehighlighter1_25_706_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_25_706_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_25_706_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">string</span><span style="color: #000000">[]&nbsp;files&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Directory.GetFiles(</span><span style="color: #000000">"</span><span style="color: #000000">Plugs</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">*.plug</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">foreach</span><span style="color: #000000">(</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;f&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;files)<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img id="Codehighlighter1_111_695_Open_Image" onclick="this.style.display='none'; Codehighlighter1_111_695_Open_Text.style.display='none'; Codehighlighter1_111_695_Closed_Image.style.display='inline'; Codehighlighter1_111_695_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_111_695_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_111_695_Closed_Text.style.display='none'; Codehighlighter1_111_695_Open_Image.style.display='inline'; Codehighlighter1_111_695_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_111_695_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_111_695_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">try</span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img id="Codehighlighter1_118_642_Open_Image" onclick="this.style.display='none'; Codehighlighter1_118_642_Open_Text.style.display='none'; Codehighlighter1_118_642_Closed_Image.style.display='inline'; Codehighlighter1_118_642_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_118_642_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_118_642_Closed_Text.style.display='none'; Codehighlighter1_118_642_Open_Image.style.display='inline'; Codehighlighter1_118_642_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_118_642_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_118_642_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />Assembly&nbsp;a&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Assembly.LoadFrom(f);<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />System.Type[]&nbsp;types&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;a.GetTypes();<br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">foreach</span><span style="color: #000000">(System.Type&nbsp;type&nbsp;</span><span style="color: #0000ff">in</span><span style="color: #000000">&nbsp;types)<br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img id="Codehighlighter1_226_640_Open_Image" onclick="this.style.display='none'; Codehighlighter1_226_640_Open_Text.style.display='none'; Codehighlighter1_226_640_Closed_Image.style.display='inline'; Codehighlighter1_226_640_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_226_640_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_226_640_Closed_Text.style.display='none'; Codehighlighter1_226_640_Open_Image.style.display='inline'; Codehighlighter1_226_640_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_226_640_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_226_640_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">if</span><span style="color: #000000">(type.GetInterface(</span><span style="color: #000000">"</span><span style="color: #000000">IPlug</span><span style="color: #000000">"</span><span style="color: #000000">)</span><span style="color: #000000">!=</span><span style="color: #0000ff">null</span><span style="color: #000000">)<br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img id="Codehighlighter1_265_638_Open_Image" onclick="this.style.display='none'; Codehighlighter1_265_638_Open_Text.style.display='none'; Codehighlighter1_265_638_Closed_Image.style.display='inline'; Codehighlighter1_265_638_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_265_638_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_265_638_Closed_Text.style.display='none'; Codehighlighter1_265_638_Open_Image.style.display='inline'; Codehighlighter1_265_638_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_265_638_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_265_638_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">if</span><span style="color: #000000">(type.GetCustomAttributes(</span><span style="color: #0000ff">typeof</span><span style="color: #000000">(PlugDisplayNameAttribute),<br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">false</span><span style="color: #000000">).Length</span><span style="color: #000000">!=</span><span style="color: #000000">1</span><span style="color: #000000">)<br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">throw</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;PlugNotValidException(type,<br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">"</span><span style="color: #000000">PlugDisplayNameAttribute&nbsp;is&nbsp;not&nbsp;supported</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">if</span><span style="color: #000000">(type.GetCustomAttributes(</span><span style="color: #0000ff">typeof</span><span style="color: #000000">(PlugDescriptionAttribute),<br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">false</span><span style="color: #000000">).Length</span><span style="color: #000000">!=</span><span style="color: #000000">1</span><span style="color: #000000">)<br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">throw</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;PlugNotValidException(type,&nbsp;<br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">"</span><span style="color: #000000">PlugDescriptionAttribute&nbsp;is&nbsp;not&nbsp;supported</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
</span><span style="color: #008080">24</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">25</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />_tree.Nodes.Add(</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;PlugTreeNode(type));<br />
</span><span style="color: #008080">26</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">27</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">28</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">29</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">catch</span><span style="color: #000000">(Exception&nbsp;e)<br />
</span><span style="color: #008080">30</span><span style="color: #000000"><img id="Codehighlighter1_663_693_Open_Image" onclick="this.style.display='none'; Codehighlighter1_663_693_Open_Text.style.display='none'; Codehighlighter1_663_693_Closed_Image.style.display='inline'; Codehighlighter1_663_693_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_663_693_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_663_693_Closed_Text.style.display='none'; Codehighlighter1_663_693_Open_Image.style.display='inline'; Codehighlighter1_663_693_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_663_693_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.cnblogs.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_663_693_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">31</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />MessageBox.Show(e.Message);<br />
</span><span style="color: #008080">32</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">33</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">34</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">35</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #0000ff">return</span><span style="color: #000000">;<br />
</span><span style="color: #008080">36</span><span style="color: #000000"><img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span></div>
<br />
<img src ="http://www.cnblogs.com/ilovexiao/aggbug/979375.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41955/" target="_blank">[新闻]开源多点触摸技术试运行</a>]]></description></item><item><title>由C#风潮想起的－给初学编程者的忠告</title><link>http://www.cnblogs.com/ilovexiao/archive/2007/11/08/953429.html</link><dc:creator>何随风</dc:creator><author>何随风</author><pubDate>Thu, 08 Nov 2007 07:31:00 GMT</pubDate><guid>http://www.cnblogs.com/ilovexiao/archive/2007/11/08/953429.html</guid><wfw:comment>http://www.cnblogs.com/ilovexiao/comments/953429.html</wfw:comment><comments>http://www.cnblogs.com/ilovexiao/archive/2007/11/08/953429.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/ilovexiao/comments/commentRss/953429.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/ilovexiao/services/trackbacks/953429.html</trackback:ping><description><![CDATA[<div id="content">
<p>&nbsp;</p>
<p>我始终认为，对一个初学者来说，IT界的技术风潮是不可以追赶的，而且也没有能力去追赶。我时常看见自己的DDMM们把课本扔了，去卖些价格不菲的诸如C#, VB.Net 这样的大部头，这让我感到非常痛心。而许多搞不清指针是咋回事的BBS站友眉飞色舞的讨论C#里面可以不用指针等等则让我觉得好笑。C#就象当年的ASP一样，"忽如一夜春风来，千树万树梨花开"，结果许多学校的信息学院成了"Web 学院"。96,97级的不少大学生都去做Web 了。当然我没有任何歧视某一行业的意识。我只是觉得如果他们把追赶这些时髦技术的时间多花一点在基础的课程上应该是可以走得更远的。&nbsp; </p>
<p>【几个误区】&nbsp; </p>
<p>初学者对C#风潮的追赶其实也只是学习过程中经常遇到的几个误区之一。我将用一些实际的例子来说明这些现象，你可以按部就班的看看自己是不是属于其中的一种或者几种：&nbsp; </p>
<p>〖认为计算机技术等于编程技术: 〗&nbsp; </p>
<p>有些人即使没有这个想法，在潜意识中也有这样的冲动。让我奇怪的是，许多信息学院的学生也有这样的念头。认为计算机专业就是编程专业，与编程无关的，或者不太相关的课程他统统都不管，极端的学生只要书上没带"编程"两个字他就不看。&nbsp; </p>
<p>其实编程只是计算机技术应用过程中一种复杂性最低的劳动，这就是为什么IT业最底层的人是程序员（CODER）。计算机技术包括了多媒体，计算机网络，人工智能，模式识别，管理信息系统等等这些方面。编程工作只是在这些具体技术在理论研究或者工程实践的过程中表达算法的过程。编程的人不一定对计算机技术的了解就一定很高。而一个有趣的现象是，不少大师级的计算机技术研究者是不懂编程的。网上的炒作和现实中良好的工作待遇把编程这种劳动神秘化了。其实每一个程序员心里都明白，自己这些东西，学的时候并不比其它专业难，所以自然也不会高档到哪里去。&nbsp; </p>
<p>〖咬文嚼字的孔已己作风: 〗&nbsp; </p>
<p>我见过一本女生的《计算机网络原理》教材，这个女生象小学生一样在书上划满了横杠杠，笔记做得满满的，打印出来一定比教材还厚。我不明白的是，象计算机网络原理这样的课程有必要做笔记？我们的应试教育的确害了不少学生，在上《原理》这一类课程的时候许多学生象学《马列原理》一样逐字背诵记忆。这乃是我见过的最愚蠢的行为。所谓《原理》，即是需要掌握它为什么这样做，学习why，而不是how（怎样做）。极端认真的学生背下以太网的网线最大长度，数据帧的长度，每个字段的意义，IP报头的格式等等，但是忘了路由的原则，忘了TCP/IP协议设计的宗旨。总之许多人花了大量的时间把书背得滚瓜烂熟却等于什么也没学。&nbsp; </p>
<p>在学习编程的时候这些学生也是这样，他们确切的记得C++语法的各个细节。看完了C++教程后看《Thinking in C++》（确实是好书），《Inside C++》，《C++ reference》，this C++, that C++......，然后是网上各种各样的关于C++语法的奇闻逸事，然后发现自己又忘了C++的一些语法，最后回头继续恶补...。有个师弟就跟我说："C++ 太难了，学了这里忘了那里，学了继承忘了模板。"我的回答道："你不去学就容易了"。我并没有教坏他，只是告诉他，死抠C++的语法就和孔已己炫耀茴香豆的茴字有几种写法一样毫无意义。你根本不需要对的C++语法太关心，动手编程就是了，有不记得的地方一查MSDN就立马搞定。我有个结论就是，实际的开发过程中对程序语法的了解是最微不足道的知识。这是为什么我在为同学用Basic（我以前从没有学过它）写一个小程序的时候，只花了半个小时看了看语法，然后再用半个小时完成了程序，而一个小时后我又完全忘记了Basic 的所有关键字。&nbsp; </p>
<p>〖不顾基础，盲目追赶时髦技术：〗&nbsp; </p>
<p>终于点到题目上来了。大多数的人都希望自己的东西能够马上跑起来，变成钱。这种想法对一个已经进入职业领域的程序员或者项目经理来说是合理的，而且IT技术进步是如此的快，不跟进就是失业。但是对于初学者来说（尤其是时间充裕的大中专在校生），这种想法是另人费解的。一个并未进入到行业竞争中来的初学者最大的资本便是他有足够的时间沉下心来学习基础性的东西，学习why 而不是how。时髦的技术往往容易掌握，而且越来越容易掌握，这是商业利益的驱使，为了最大化的降低软件开发的成本。但在IT领域内的现实就是这样，越容易掌握的东西，学习的人越多，而且淘汰得越快。每一次新的技术出来，都有许多初学者跟进，这些初学者由于缺乏必要的基础而使得自己在跟进的过程中花费大量的时间，而等他学会了，这种技术也快淘汰了。基础的课程，比方数据结构，操作系统原理等等虽然不能让你立马就实现一个linux（这是许多人嘲笑理论课程无用的原因），但它们能够显著的减少你在学习新技术时学习曲线的坡度。而且对于许多关键的技术（比方Win32 SDK 程序的设计，DDK的编程）来说甚至是不可或缺的。&nbsp; </p>
<p>一个活生生的例子是我和我的一个同学，在大一时我还找不到开机按纽，他已经会写些简单的汇编程序了。我把大二的所有时间花在了汇编，计算机体系结构，数据结构，操作系统原理等等这些课程的学习上，而他则开始学习HTML和VB，并追赶ASP的潮流。大三的时候我开始学习Windows 操作系统原理，学习SDK编程，时间是漫长的，这时我才能够用VC开发出象模象样的应用程序。我曾一度因为同学的程序已经能够运行而自己还在学习如何创建对话框而懊恼不已，但临到毕业才发现自己的选择是何等的正确。和我谈判的公司开出的薪水是他的两倍还多。下面有一个不很恰当的比方：假设学习VB编程需要4个月，学习基础课程和VC的程序设计需要1年。那么如果你先学VB，再来学习后者，时间不会减少，还是1年，而反过来，如果先学习后者，再来学VB，也许你只需要1个星期就能学得非常熟练。&nbsp; </p>
<p>如果你是学生，或者如果你有充足的时间。我建议你仔细的掌握下面的知识。我的建议是针对那些希望在IT技术上有所成就的初学者。同时我还列出了一些书目，这些书应该都还可以在书店买到。说实在的，我在读其他人的文章时最大的心愿就是希望作者列出一个书单。&nbsp; </p>
<p>[大学英语]－不要觉得好笑。我极力推荐这门课程是因为没有专业文档的阅读能力是不可想象的。中文的翻译往往在猴年马月才会出来，而现在的许多出版社干脆就直接把E文印刷上去。学习的方法是强迫自己看原版的教材，开始会看不懂，用多了自然熟练。吃得苦下得狠心绝对是任何行业都需要的品质。&nbsp; </p>
<p>[计算机体系结构和汇编语言]－关于体系结构的书遍地都是，而且也大同小异，倒是汇编有一本非常好的书。《80x86汇编语言程序设计教程》（清华大学出版社，黑色封面，杨季文著）。你需要着重学习386后保护模式的程序设计。否则你在学习现代操作系统底层的一些东西的时候会觉得是在看天书。&nbsp; </p>
<p>[计算机操作系统原理]－我们的开发总是在特定的操作系统上进行，如果不是，只有一种可能：你在自己实现一个操作系统。无论如何，操作系统原理是必读的。这就象我们为一个芯片制作外围设备时，芯片基本的工作时序是必需了解的。这一类书也很多，我没有发现哪一本书非常出众。只是觉得在看完了这些书后如果有空就应该看看《Inside Windows 2000》(微软出版社，我看的是E文版的，中文的书名想必是Windows 2000 技术内幕之类吧)。关于学习它的必要性，ZDNET上的另一篇文章已经有过论述。&nbsp; </p>
<p>[数据结构和算法]－这门课程能够决定一个人程序设计水平的高低，是一门核心课程。我首选的是清华版的（朱战立，刘天时）。很多人喜欢买C++版的，但我觉得没有必要。C++的语法让算法实现过程变得复杂多了，而且许多老师喜欢用模块这一东西让算法变得更复杂。倒是在学完了C版的书以后再来浏览一下C++的版的书是最好的。&nbsp; </p>
<p>[软件工程]－这门课程是越到后来就越发现它的重要，虽然刚开始看时就象看马哲一样不知所云。我的建议是看《实用软件工程》（黄色，清华）。不要花太多的时间去记条条框框，看不懂就跳过去。在每次自己完成了一个软件设计任务（不管是练习还是工作）以后再来回顾回顾，每次都会有收获。&nbsp; </p>
<p>[Windows 程序设计]－《北京大学出版社，Petzold著》我建议任何企图设计Windows 程序的人在学习VC以前仔细的学完它。而且前面的那本《Inside Windows 2000》也最好放到这本书的后面读。在这本书中，没有C++，没有GUI，没有控件。有的就是如何用原始的C语言来完成Windows 程序设计。在学完了它以后，你才会发现VC其实是很容易学的。千万不要在没有看完这本书以前提前学习VC，你最好碰都不要碰。我知道的许多名校甚至都已经用它作为教材进行授课。可见其重要。&nbsp; </p>
<p>上面的几门课程我认为是必学的重要课程（如果你想做Windows 程序员）。&nbsp; </p>
<p>对于其它的课程有这样简单的选择方法：如果你是计算机系的，请学好你所有的专业基础课。如果不是，请参照计算机系的课程表。如果你发现自己看一本书时无法看下去了，请翻到书的最后，看看它的参考文献，找到它们并学习它们，再回头看这本书。如果一本书的书名中带有"原理"两个字，你一定不要去记忆它其中的细节，你应该以一天至少50页的速度掌握其要领。尽可能多的在计算机上实践一种理论或者算法。&nbsp; </p>
<p>你还可以在CSDN上阅读到许多书评。这些书评能够帮助你决定读什么样的书。&nbsp; </p>
<p>〖日三省乎己〗&nbsp; <br />
每天读的书太多，容易让人迷失方向。一定要在每天晚上想想自己学了些什么，还有些什么相关的东西需要掌握，自己对什么最感兴趣，在一本书上花的时间太长还是不够等等。同时也应该多想想未来最有可能出现的应用，这样能够让你不是追赶技术潮流而是引领技术潮流。同时，努力使用现在已经掌握的技术和理论去制作具有一定新意的东西。坚持这样做能够让你真正成为一个软件"研发者"而不仅仅是一个CODER。&nbsp; </p>
<p>〖把最多的时间花在学习上〗&nbsp; <br />
这是对初学者最后的忠告。把每个星期玩SC或者CS的时间压缩到最少，不玩它们是最好的。同时，如果你的ASP技术已经能够来钱，甚至有公司请你兼职的话，这就证明你的天份能够保证你在努力的学习之后取得更好的收益，你应该去做更复杂的东西。眼光放长远一些，这无论是对谁都是适用的。&nbsp; </p>
<p>相信你已经能够决定是否学习C＃或者什么时候去学它了。<br />
</p>
</div>
 <img src ="http://www.cnblogs.com/ilovexiao/aggbug/953429.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41954/" target="_blank">[新闻]国内软件外包高管集聚大连 探讨竞争与应对策略</a>]]></description></item></channel></rss>