﻿<?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>IT博客-青蛙學堂-随笔分类-Vs2008</title><link>http://www.cnitblog.com/yide/category/8897.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 18 May 2020 14:06:10 GMT</lastBuildDate><pubDate>Mon, 18 May 2020 14:06:10 GMT</pubDate><ttl>60</ttl><item><title>JSON的简介</title><link>http://www.cnitblog.com/yide/archive/2020/05/14/92173.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Thu, 14 May 2020 08:20:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2020/05/14/92173.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/92173.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2020/05/14/92173.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/92173.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/92173.html</trackback:ping><description><![CDATA[<br /><h1><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: normal; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; overflow-wrap: break-word; line-height: 1.8; font-size: 15px;">一、什么是JSON？</span></h1><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14px; color: #333333; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度。</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14px; color: #333333; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">JSON就是一串字符串 只不过元素会使用特定的符号标注。</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14px; color: #333333; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">{} 双括号表示对象</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14px; color: #333333; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">[] 中括号表示数组</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14px; color: #333333; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">"" 双引号内是属性或值</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14px; color: #333333; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">: 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14px; color: #333333; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">所以 {"name": "Michael"} 可以理解为是一个包含name为Michael的对象</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14px; color: #333333; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">而[{"name": "Michael"},{"name": "Jerry"}]就表示包含两个对象的数组</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14px; color: #333333; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">当然了,你也可以使用{"name":["Michael","Jerry"]}来简化上面一部,这是一个拥有一个name数组的对象</p><h1><a name="t2" style="box-sizing: border-box; outline: none; margin: 0px; padding: 0px; font-weight: normal; cursor: pointer; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; color: rgb(78, 161, 219); overflow-wrap: break-word;"></a><a name="t2" style="box-sizing: border-box; outline: none; margin: 0px; padding: 0px; font-weight: normal; cursor: pointer; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; color: rgb(78, 161, 219); overflow-wrap: break-word;"></a><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: normal; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; overflow-wrap: break-word; line-height: 1.8; font-size: 15px;">二、JSON解析之传统的JSON解析</span></h1><h2><a name="t3" style="box-sizing: border-box; outline: none; margin: 0px; padding: 0px; font-weight: normal; cursor: pointer; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; color: rgb(78, 161, 219); overflow-wrap: break-word;"></a><a name="t3" style="box-sizing: border-box; outline: none; margin: 0px; padding: 0px; font-weight: normal; cursor: pointer; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; color: rgb(78, 161, 219); overflow-wrap: break-word;"></a><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-weight: normal; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; overflow-wrap: break-word; line-height: 1.8; font-size: 15px;">1、生成json字符串</span></h2><div style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word; color: #333333; font-size: 14px; border-color: #cccccc; border-image: initial; overflow: auto; font-family: &quot;Courier New&quot; !important;"><pre style="box-sizing: border-box; outline: 0px; margin-top: 0px; margin-bottom: 24px; padding: 8px; position: relative; white-space: pre-wrap; overflow-wrap: break-word; overflow-x: auto; line-height: 22px; color: #000000; font-family: &quot;Courier New&quot; !important;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; overflow-wrap: break-word; line-height: 1.8; color: #0000ff;">public</span> <span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; overflow-wrap: break-word; line-height: 1.8; color: #0000ff;">static</span><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; overflow-wrap: break-word; line-height: 1.8;"> String createJsonString(String key, Object value) {         JSONObject jsonObject </span>= <span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; overflow-wrap: break-word; line-height: 1.8; color: #0000ff;">new</span><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; overflow-wrap: break-word; line-height: 1.8;"> JSONObject();         jsonObject.put(key, value);         </span><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; overflow-wrap: break-word; line-height: 1.8; color: #0000ff;">return</span><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; overflow-wrap: break-word; line-height: 1.8;"> jsonObject.toString(); }</span></pre></div><br /><br /><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;"><strong style="margin: 0px; padding: 0px;">一、JSONObject和JSONArray的数据表示形式</strong></p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;">　　JSONObject的数据是用 { &nbsp;} 来表示的，</p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;">&nbsp; &nbsp; &nbsp; &nbsp; 例如： &nbsp; { "id" : "123", "courseID" : "huangt-test", "title" : "提交作业", "content" : null &nbsp;} &nbsp;</p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;">　　而JSONArray，顾名思义是由JSONObject构成的数组，用 &nbsp;[ { } , { } , ...... &nbsp;, { } ] &nbsp;来表示</p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;">&nbsp; &nbsp; &nbsp; &nbsp;例如： &nbsp; [&nbsp;{&nbsp; "id" : "123",&nbsp;"courseID" : "huangt-test",&nbsp;"title" : "提交作业" } &nbsp;, &nbsp;{&nbsp;&nbsp;"content" : null,&nbsp;"beginTime" : 1398873600000&nbsp; "endTime" } ] ；&nbsp;</p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;">&nbsp; &nbsp; &nbsp; &nbsp; 表示了包含2个JSONObject的JSONArray。</p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;">　　可以看到一个很明显的区别，一个用的是 { &nbsp;} &nbsp;，一个最外面用的是 [ &nbsp;] &nbsp;；</p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;">&nbsp;</p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;"><strong style="margin: 0px; padding: 0px;">二、如何从字符串String获得JSONObject对象和JSONArray对象</strong></p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;"><strong style="margin: 0px; padding: 0px;">&nbsp; &nbsp; &nbsp; &nbsp;</strong>&nbsp;JSONObject &nbsp;jsonObject &nbsp;= new JSONObject (String &nbsp;str);</p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;">&nbsp; &nbsp; &nbsp; &nbsp; JSONArray jsonArray = new JSONArray(String str &nbsp;)&nbsp;;</p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;">&nbsp;</p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;"><strong style="margin: 0px; padding: 0px;">三、如何从JSONArray中获得JSONObject对象</strong></p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;">&nbsp; &nbsp; &nbsp; &nbsp;大家可以把JSONArray当成一般的数组来对待，只是获取的数据内数据的方法不一样</p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;">&nbsp; &nbsp; &nbsp; &nbsp;JSONObject &nbsp; jsonObject = (JSONObject)jsonArray.get(i);</p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;">&nbsp; &nbsp; &nbsp; &nbsp; JSONObject &nbsp; jsonObject &nbsp;= &nbsp;jsonArray.getJSONObject(i) ; &nbsp;</p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;">&nbsp; 　&nbsp; 两者都可。第一种注意转换&nbsp;</p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;">&nbsp;</p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;"><strong style="margin: 0px; padding: 0px;">四、获取JSON内的数据</strong></p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;"><strong style="margin: 0px; padding: 0px;">&nbsp; &nbsp; &nbsp; &nbsp;</strong>int &nbsp; jid= jsonObject.getInt ( "id" ) ; &nbsp; &nbsp;// &nbsp;这里的jid得到的数据就是123.</p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;">&nbsp; &nbsp; &nbsp; &nbsp;String &nbsp;jcourse=jsonObject.getString( " courseID") ; &nbsp; // 这里的jcourse得到的数据就是huangt-test.</p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;">&nbsp; &nbsp; &nbsp; Strirng jcourse = jsonObject.get("courseID").toString();</p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;">&nbsp;</p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;"><strong style="margin: 0px; padding: 0px;">&nbsp;五、一般地为键值对</strong></p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;"><strong style="margin: 0px; padding: 0px;">&nbsp; &nbsp; &nbsp;&nbsp;</strong>&nbsp;eg:{ &nbsp;name:"xm", value:"张三"}</p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;">&nbsp; &nbsp; &nbsp; &nbsp;String jname = null;</p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;">&nbsp; &nbsp; &nbsp; &nbsp;if(jsonObject.get("name").equals("xm")){</p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;">&nbsp; &nbsp; &nbsp; 　　&nbsp;jname=jsonObject.get("value").toString();</p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;">&nbsp; &nbsp; &nbsp; &nbsp;}</p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;">&nbsp;</p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;">&nbsp;六：&nbsp; JSON.parse( str )&nbsp; &nbsp; --&gt; 把字符串转为JSON对象</p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;JSON.stringify( obj ) --&gt;把对象解析为字符串</p><p style="margin: 10px auto; padding-top: 0px; padding-bottom: 0px; color: #333333; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px;">&nbsp;</p><br /><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 16px; color: #333333; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; overflow-wrap: break-word; line-height: 1.8;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word; font-size: 24px;">JSONObject、JSONArray区别</span><br style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;" /></span></p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-family: verdana, Arial, Helvetica, sans-serif; font-size: 14px; color: #333333; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"></p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-family: &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 14px; color: #403226; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">　json，就是一个键对应一个值，超级简单的一对一关系。现在用到的json那可以层层嵌套啊，刚开始接触的时候，确实有种崩溃的赶脚，不想去理，取个数据还那么麻烦。其实，就跟if else语句一样，如果if中套if，if中再套if，写的规范了还行，要是代码格式不规范，那我们肯定也看着麻烦。所以啊，对于json嵌套，只要记住符号&#8220;：&#8221;前是键，符号后是值大括号成对找，一层层剥开，就清楚了。&nbsp;举个例子说明，如下：</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-family: &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 14px; color: #403226; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; overflow-wrap: break-word; color: #ff0000; font-size: 18pt;">[{name1:{name2:{name3:'value1',name4:'value2'}}},{}]</span></p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-family: &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 14px; color: #403226; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">　　从外到里看，例子中就是一个数组，数组里面是两个json格式的字符串。这样分析思路就清晰多了。</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-family: &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 14px; color: #403226; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">&nbsp; &nbsp; &nbsp;工作中需要取出name4的值，你们会怎么取呢？。最初我都想过字符串截取，那时还不了解JSONArray，现在知道了，取出来也就相当容易了。</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-family: &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 14px; color: #403226; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">&nbsp; &nbsp; &nbsp;取出name4值过程步骤：1，将以上字符串转换为JSONArray对象；2，取出对象的第一项，JSONObject对象；3，取出name1的值JSONObject对象；4，取出name2的值JSONObject对象；5，取出name4的值value2。</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-family: &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 14px; color: #403226; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">&nbsp; &nbsp; 示例中json数组格式的字符串可以通过方法直接转换为JSONArray的格式:</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-family: &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 14px; color: #403226; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">　　JSONArray.fromObject(String)</p><ol start="1" style="box-sizing: border-box; outline: 0px; margin: 0px 0px 24px; padding: 0px; list-style: none; font-family: &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 16px; overflow-wrap: break-word; color: #403226;"><li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; overflow-wrap: break-word;">JSONArray&nbsp;getJsonArray=JSONArray.fromObject(arrayStr);<span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;">//将结果转换成JSONArray对象的形式&nbsp;&nbsp;</span></li><li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; overflow-wrap: break-word;">JSONObject&nbsp;getJsonObj&nbsp;=&nbsp;getJsonArray.getJSONObject(<span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word; color: #c00000;">0);<span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;">//获取json数组中的第一项&nbsp;&nbsp;</span></span></li><li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; overflow-wrap: break-word;">String&nbsp;result=getJsonObj.getJSONObject(<span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;">"name1").getJSONObject(<span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;">"name2").getJSONObject(<span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;">"name4");&nbsp;</span></span></span></li></ol><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-family: &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 14px; color: #403226; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">好了我们说说这两个对象。</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-family: &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 14px; color: #403226; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">1，JSONObject</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-family: &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 14px; color: #403226; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">&nbsp; json对象，就是一个键对应一个值，使用的是大括号{ }，如：{key:value}</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-family: &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 14px; color: #403226; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">2，JSONArray</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-family: &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 14px; color: #403226; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">&nbsp; json数组，使用中括号[ ],只不过数组里面的项也是json键值对格式的</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-family: &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 14px; color: #403226; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">&nbsp; Json对象中添加的是键值对，JSONArray中添加的是Json对象</p><ol start="1" style="box-sizing: border-box; outline: 0px; margin: 0px 0px 24px; padding: 0px; list-style: none; font-family: &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 16px; overflow-wrap: break-word; color: #403226;"><li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; overflow-wrap: break-word;">JSONObject&nbsp;Json&nbsp;=&nbsp;<span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;">new&nbsp;JSONObject();&nbsp;&nbsp;</span></li><li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; overflow-wrap: break-word;">JSONArray&nbsp;JsonArray&nbsp;=&nbsp;<span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;">new&nbsp;JSONArray();&nbsp;&nbsp;</span></li><li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; overflow-wrap: break-word;">&nbsp;&nbsp;</li><li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; overflow-wrap: break-word;">Json.put(<span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;">"key",&nbsp;<span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;">"value");<span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;">//JSONObject对象中添加键值对&nbsp;&nbsp;</span></span></span></li><li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; overflow-wrap: break-word;">JsonArray.add(Json);<span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;">//将JSONObject对象添加到Json数组中 &nbsp;</span></li></ol><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-family: &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 14px; color: #403226; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;"><span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; overflow-wrap: break-word;">3，JSONObject与Map</span></p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-family: &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 14px; color: #403226; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">&nbsp; &nbsp; Map&nbsp;map和json都是键值对，不同的是map中键值对中间用等号分开，json中键值对中间用冒号分开。其实json就是一种特殊形式的map。</p><ol start="1" style="box-sizing: border-box; outline: 0px; margin: 0px 0px 24px; padding: 0px; list-style: none; font-family: &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 16px; overflow-wrap: break-word; color: #403226;"><li style="box-sizing: border-box; outline: 0px; margin: 8px 0px 0px 40px; padding: 0px; list-style: decimal; font-family: &quot;Microsoft YaHei&quot;, &quot;SF Pro Display&quot;, Roboto, Noto, Arial, &quot;PingFang SC&quot;, sans-serif; overflow-wrap: break-word;">Map&lt;String,String&gt;&nbsp;strmap=<span style="box-sizing: border-box; outline: 0px; margin: 0px; padding: 0px; overflow-wrap: break-word;">new&nbsp;JSONObject(); &nbsp;</span></li></ol><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; padding-top: 0px; padding-bottom: 0px; font-family: &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, Helvetica, Arial, sans-serif; font-size: 14px; color: #403226; line-height: 26px; overflow-x: auto; overflow-wrap: break-word;">&nbsp; &nbsp; 这里的需求是：request对象获取的map，想要返回json格式也不用白费力了。</p><img src ="http://www.cnitblog.com/yide/aggbug/92173.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2020-05-14 16:20 <a href="http://www.cnitblog.com/yide/archive/2020/05/14/92173.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FW:结识正能量，跟对人 </title><link>http://www.cnitblog.com/yide/archive/2014/04/03/89393.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Thu, 03 Apr 2014 09:45:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2014/04/03/89393.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/89393.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2014/04/03/89393.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/89393.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/89393.html</trackback:ping><description><![CDATA[<header class="entry-header">&nbsp; 
<h1 class="entry-title"><a href="http://www.xiaobapo.com/?p=8" rel="bookmark">结识正能量，跟对人</a> </h1><!-- .comments-link --></header><!-- .entry-header -->

<div class="entry-content">
<p>&#8220;沙子是废物，水泥也是废物，但他们混在一起是混凝土，就是精品；大米是精品，汽油也是精品，但他们混在一起就是废物。是精品还是废物不重要，跟谁混，很重要! ＂</p>
<p>&nbsp;朋友不是乱交的，每天在一起喝酒的不一定是真朋友，每天在一起混的也不一定是永远的朋友。人生要交的四位朋友：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;<br />1、交一个欣赏你的朋友，即便在你穷困潦倒的时候反而会更安慰你、帮助你。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;<br />2、交一个有正能量的朋友，在你情绪低落的时候陪伴你、鼓励你。&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;<br />3、交一个为你领路的朋友，自愿做你的垫脚石，带你走过泥泞、拨开迷雾。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;<br />4、交一个肯指点你的朋友，时刻提醒你、监督你，让你时刻发现自己的不足。!财富不是永远的朋友，朋友却是永远的财富</p></div><img src ="http://www.cnitblog.com/yide/aggbug/89393.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2014-04-03 17:45 <a href="http://www.cnitblog.com/yide/archive/2014/04/03/89393.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>自动创建--html控件</title><link>http://www.cnitblog.com/yide/archive/2012/05/24/80270.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Thu, 24 May 2012 03:46:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2012/05/24/80270.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/80270.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2012/05/24/80270.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/80270.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/80270.html</trackback:ping><description><![CDATA[<p><font color="#000000" size="3" face="Times New Roman">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;</font></p>
<p><font color="#000000" size="3" face="Times New Roman">&lt;html xmlns="http://www.w3.org/1999/xhtml" &gt;<br />&lt;head runat="server"&gt;<br />&nbsp;&nbsp;&nbsp; &lt;title&gt;无标题页&lt;/title&gt;<br />&nbsp;&nbsp;&nbsp; <br />&nbsp; &lt;script&gt; <br />function&nbsp;&nbsp; showForm() <br />{ <br />&nbsp;&nbsp;&nbsp; var&nbsp;&nbsp; s=&nbsp;&nbsp; " "&nbsp;&nbsp; + <br />' &lt;form&nbsp;&nbsp; action= "http://www.cnn.com "&nbsp;&nbsp; method= "post "&gt; '&nbsp;&nbsp; +&nbsp;&nbsp; '\n '+ <br />' &lt;input&nbsp;&nbsp; type= "text "&nbsp;&nbsp; name= "name "&nbsp;&nbsp; value= "1 "/&gt; &lt;br&gt; '&nbsp;&nbsp; +&nbsp;&nbsp; '\n '&nbsp;&nbsp; + <br />' &lt;input&nbsp;&nbsp; type= "checkbox "&nbsp;&nbsp; name= "chk "&nbsp;&nbsp; /&gt; Check&nbsp;&nbsp; boc '&nbsp;&nbsp; +&nbsp;&nbsp; '\n '&nbsp;&nbsp; + <br />' &lt;input&nbsp;&nbsp; type= "submit " value="button"&nbsp; /&gt; '+ '\n '+ <br />'&nbsp; &lt;input id="Button1" type="button" value="button" /&gt; '+ '\n '+ <br />'&nbsp;&nbsp; &lt;input id="Checkbox1" type="checkbox" /&gt;chose '+ '\n '+ </font></p>
<p><font color="#000000" size="3" face="Times New Roman">' &lt;/form&gt; '; <br />&nbsp; hiddenForm.innerHTML&nbsp;&nbsp; =s; <br />} <br />&lt;/script&gt;&nbsp; <br />&nbsp;&nbsp;&nbsp; <br />&lt;/head&gt;<br />&lt;body&gt;<br />&nbsp;&nbsp; <br />&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在下面：<br />&nbsp;&nbsp;&nbsp; &lt;div&nbsp;&nbsp; id= "hiddenForm"&gt; &lt;/div&gt; <br />&nbsp;&nbsp;&nbsp; <br />&lt;input&nbsp;&nbsp; type=button&nbsp;&nbsp; value= "Show&nbsp;&nbsp; Form "&nbsp;&nbsp; onclick= "showForm(); "&gt; </font></p>
<p><font color="#000000" size="3" face="Times New Roman">&nbsp;&nbsp;&nbsp; <br />&lt;/body&gt;<br />&lt;/html&gt;<br /></font></p><img src ="http://www.cnitblog.com/yide/aggbug/80270.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2012-05-24 11:46 <a href="http://www.cnitblog.com/yide/archive/2012/05/24/80270.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>.net--problem--FW:</title><link>http://www.cnitblog.com/yide/archive/2012/05/23/80244.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Wed, 23 May 2012 12:04:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2012/05/23/80244.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/80244.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2012/05/23/80244.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/80244.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/80244.html</trackback:ping><description><![CDATA[<h1 class="postTitle"><font color="#1a8bc8"></font>&nbsp;</h1>
<div id="cnblogs_post_body"><span>（澄清一下，我发帖的目的不是用来专门给人评价这些问题的好坏的，实际上我所在的公司就考察这些问题。而能够基本上答出来的可以说百里挑一。如果各位觉得这些问题很简单，那么基本上在.NET面试环节就没有什么问题了，同时欢迎提供一些更多的问题。如果还有些不知道，那么不妨静下心来思考一下（或者用15秒搜索一下），没有必要花太多时间来攻击题目的合理性。毕竟，几乎所有的面试都是这样。如果没法改变，我们还是学着适应吧。）<br /><br />如果你的简历上面说&#8220;精通</span><span>.NET</span><span>&#8221;，那么下面的问题应该大都可以给出较完美的答案。我会稍后给出一些我的想法，还请各位不吝指正并参与讨论。也欢迎提供给我更多的问题。<br /></span>这里还有一些基础问题：<a href="http://www.cnblogs.com/dflying/archive/2006/04/01/364458.html" target="_blank"><font color="#1a8bc8">http://www.cnblogs.com/dflying/archive/2006/04/01/364458.html</font></a>&nbsp; 
<p><span>注：对于每个判断是非问题，都要考虑&#8220;为什么&#8221;与&#8220;为什么不&#8221;。</span></p>
<ol type="1"><li><span>Thread</span><span>和</span><span>Process</span><span>之间有什么区别？</span><span>.NET</span><span>新引入了</span><span>Application Domain</span><span>的概念，这样他们三个之间有什么区别？引入了</span><span>Application Domain</span><span>会带来一些潜在的问题么？</span></li><li><span>Windows Service</span><span>与普通的</span><span>EXE</span><span>在执行过程中有什么区别？</span></li><li><span>一个进程可以访问的</span><span>Windows</span><span>地址空间有多大？等于系统的虚拟内存大小么？这两方面将对系统的设计产生什么样的影响？</span></li><li><span>EXE</span><span>和</span><span>DLL</span><span>之间的区别是什么？在系统设计中应该如何选择使用它们？</span></li><li><span>普通的</span><span>EXE</span><span>与</span><span>.NET EXE</span><span>的执行过程有什么不同？</span></li><li><span>什么是弱类型，什么是强类型？在系统设计中应该首先考虑使用哪种类型？</span></li><li><span>PDB</span><span>文件是作什么用的？里面包含了什么信息？</span></li><li><span>Cyclomatic Complexity</span><span>是什么？为什么它很重要？</span></li><li><span>为创建一个</span><span>critical section</span><span>以访问某个变量书写一个标准的</span><span>lock() </span><span>并加上</span><span>double check</span><span>。</span></li><li><span>为某个对象实现标准的</span><span>Dispose</span><span>模式。</span></li><li><span>什么是</span><span>FullTrust? </span><span>存在于</span><span>GAC</span><span>中的</span><span> assembly </span><span>拥有</span><span>FullTrust</span><span>么？</span><span> </span></li><li><span>下面这个命令是做什么的？</span><span>gacutil /l | find /i &#8220;system&#8221; </span></li><li><span>下面这个命令是作什么的？</span><span> sn -t something.dll</span></li><li><span>跨防火墙的</span><span> DCOM</span><span>必须打开哪个端口？端口</span><span>135</span><span>是用来做什么的？</span></li><li><span>有什么办法可以与现有</span><span>unmanaged code</span><span>集成？在集成的时候应该考虑什么问题？</span></li><li><span>简要解释一下</span><span>OOP</span><span>与</span><span>SOA</span><span>都是用来作什么的？</span><span> </span></li><li><span>XmlSerializer</span><span>是如何工作的？进程运行</span><span>XmlSerializer</span><span>时候需要什么样的</span><span>ACL</span><span>权限？</span></li><li><span>在系统设计时，何时应该使用</span><span>try catch</span><span>？何时需要避免使用？</span></li><li><span>Debug.Write()</span><span>和</span><span>Trace.Write()</span><span>之间有什么区别？二者分别应该用于何处？</span><span> </span></li><li><span>Debug Build</span><span>和</span><span>Release Build</span><span>有什么区别？在执行效率上有什么明显的区别么？</span><span> </span></li><li><span>JIT</span><span>是针对</span><span>Assembly</span><span>还是</span><span>Method</span><span>发生的？解释一下为什么</span><span>.NET</span><span>的设计者要这样做？</span></li><li><span>简要描述一下</span><span>GC</span><span>的执行过程。</span></li><li><span>应该如何选择使用</span><span>abstract class</span><span>还是</span><span>interface</span><span>？</span></li><li><span>在设计一个自定义类型时应如何选择使用</span><span>Value Type</span><span>还是</span><span>Reference Type</span><span>？</span></li><li><span>对于</span><span>Value Type</span><span>和</span><span>Reference Type</span><span>，</span><span>a.Equals(b)</span><span>的默认实现方式有什么不同？</span></li><li><span>.NET</span><span>中为什么不提供默认的</span><span>deep copy</span><span>？如果需要，要如何实现</span><span>deep copy</span><span>？</span></li><li><span>相对于</span><span>.NET 1.1</span><span>，</span><span>.NET2.0</span><span>为了避免过度的</span><span>boxing/unboxing</span><span>造成的系统开销提供了哪些支持？</span></li><li><span>String</span><span>是</span><span>Value Type</span><span>还是</span><span>Reference Type</span><span>？为什么</span><span>.NET</span><span>中的</span><span>String</span><span>对象被设置成</span><span>immutable</span><span>？</span> </li></ol>
<p><span>如果您能较完美的回答其中大多数问题，你已经可以毫无疑问的宣称自己&#8220;精通</span><span>.NET</span><span>&#8221;了。祝各位好运！</span></p></div><img src ="http://www.cnitblog.com/yide/aggbug/80244.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2012-05-23 20:04 <a href="http://www.cnitblog.com/yide/archive/2012/05/23/80244.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>.net--interview5</title><link>http://www.cnitblog.com/yide/archive/2012/05/23/80243.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Wed, 23 May 2012 12:01:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2012/05/23/80243.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/80243.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2012/05/23/80243.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/80243.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/80243.html</trackback:ping><description><![CDATA[<strong>1， 请你说说<a href="http://www.jzxue.com/wangzhankaifa/asp-net/" target="_blank">.NET</a>中类和结构的区别?</strong> 
<p>　　答：结构和类具有大体的语法，但是结构受到的限制比类要多。类的<a href="http://www.jzxue.com/tag/%B9%D8%BC%FC%D7%D6/" target="_blank">关键字</a>是class，而结构的关键字是struct，结构不能申明有默认的构造函数，为结构的副本是又编译器创建和销毁的，所以不需要默认的构造函数和析构函数。结构是值类型，所以对结构变量所做的改变不会影响其的原值，而类是引用类型，改变其变量的值会改变其原值。向方法传递结构是时是通过值传递的，而不是通过引用。与类不同，结构的实例化可以不使用New关键字。类可以实现接口。</p>
<p><strong>　　2， 死锁的必要条件?怎么克服?</strong></p>
<p>　　答：系统的资源不足，进程的推进的顺序不合适，资源分配不当，一个资源每次只能被一个进程使用，一个资源请求资源时，而此时这个资源已阻塞，对已获得资源不放，进程获得资源时，未使用完前，不能强行剥夺。</p>
<p><strong>　　3， 接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体类?</strong></p>
<p>　　答：接口是可以继承接口的，抽象类是可以实现接口的，抽象类可以继承实体类，但是有个条件，条件是，实体类必须要有明确的构造函数。</p>
<p>　<strong>　4， 构造器Constructor是否可以被继承?是否可以被Override?</strong></p>
<p>　　答：Constructor不可以被继承，因此不能被重写(Overriding)，但可以被重载(Overloading).</p>
<p>　　<strong>5， 当一个线程进入一个对象的方法后，其它线程是否可以进入该对象的方法?</strong></p>
<p>　　答：不可以，一个对象的方法只能由一个线程访问。</p>
<p>　<strong>　6， 用最有效的方法算出等已8对于几?</strong></p>
<p>　　答：2&lt;&lt;3.</p>
<p><strong>　　7, C#是否可以对内存直接进行操作?</strong></p>
<p>　　答：可以这样问答。C#是可以对内存进行直接操作的，虽然很少用到指针，但是C#是可以使用指针的，在用的时候需要在前边加unsafe,，在.net中使用了垃圾回收机制(GC)功能，它替代了程序员，不过在C#中不可以直接使用finalize方法，而是在析构函数中调用基类的finalize()方法。</p>
<p>　<strong>　8， Error和Exception有是区别?</strong></p>
<p>　　答：error表示恢复不是不可能，但是很困难，exception表示一种实际或实现问题，它表示程序运行正常不可以发生的。</p>
<p>　<strong>　9， 谈谈final,finally,finallize的区别?</strong></p>
<p>　　答：final用于申明属性，方法和类，表示属性不可变，方法不可以被覆盖，类不可以被继承。</p>
<p>　　Finally是异常处理语句结构中，表示总是执行的部分。</p>
<p>　　Finallize表示是object类一个方法，在垃圾回收机制中执行的时候会被调用被回收对象的方法。</p>
<p>　　<strong>10, HashMap和Hashtable区别?</strong></p>
<p>　　答：HashMap是Hashtable的轻量级实现，非线程安全的实现他们都实现了map接口，主要区别是HashMap键值可以为空null,效率可以高于Hashtable。</p>
<p>　　<strong>11，Collection和Collections的区别?</strong></p>
<p><strong>　　</strong>答：Collection是集合类的上级接口，Collections是针对集合类的一个帮助类，它提供一系列静态方法来实现对各种集合的搜索，排序，线程安全化操作。</p>
<p>　<strong>　12，C#中委托是什么?事件是不是一种委托?</strong></p>
<p>　　答：委托是一种安全的类似与函数指针，但是她比指针要安全的多，它可以把方法作为一个参数传递给另一个方法，可以理解为指向函数的引用。事件是一种消息机制，它是一种委托，委托不带方法体。</p>
<p><strong>13，Override, Overload,的区别?</strong></p>
<p>　　答：Override是重写的意思，它表示重写基类的方法，而且方法的名称，返回类型，参数类型，参数个数要与基类相同。</p>
<p>　　Overload是重载是意思，它也表示重写基类的方法，但是只要方法名相同，别的可以不同。</p>
<p>　　<strong>14，在一个BS结构中需要传递变量值时，不能使用se<a href="http://www.jzxue.com/tag/SSI/" target="_blank">ssi</a>on,coolke,<a href="http://www.jzxue.com/tag/Application/" target="_blank">application</a>,你有几中方法?</strong></p>
<p>　　答：this.<a href="http://www.jzxue.com/fuwuqi/" target="_blank">server</a>.Transfer,Querystring.</p>
<p>　　<strong>15, C#种<a href="http://www.jzxue.com/tag/%CB%F7%D2%FD/" target="_blank">索引</a>器实现过程，是否只能根据数字索引?</strong></p>
<p>　　答：不是的，可以是任意类型。</p>
<p>　<strong>　16，New有种用法?</strong></p>
<p>　　答：有3种，第一种是，实例化如：New Class()</p>
<p>　　第二种是，public new 隐藏基类的方法</p>
<p>　　第三种是，在泛型类申明中的任何类型参数都必须有公共的无参构造函数。</p>
<p>　　<strong>17，任何把一个Array复制到Arraylist中?</strong></p>
<p>　　答：Foreach (object o in Array), ArrayList.Add (0)</p>
<p>　　等有好多中种方法。<br />　　<strong>18，概述反射和序列化?</strong></p>
<p>　　答：反射：要给发射下一个定义还是比较难的，这里先说说我的理解。反射提供了封装程序集，模块和类型对象，可以用反射动态地创建类型的实例，将类型绑定到现有对象，或者从现有对象类型里获取类型，然后调用类型的方法或访问字段和属性。</p>
<p>　　序列化：将对象转换为另一种媒介传输的格式过程。如，序列化一个对象，用<a href="http://www.jzxue.com/tag/HTTP/" target="_blank">Http</a>通过internet在客户端和<a href="http://www.jzxue.com/fuwuqi/" target="_blank">服务器</a>之间传递该对象，在另一端用反序列化从该流中重新得到对象。</p>
<p>　<strong>　19，Const和ReadOnly?</strong></p>
<p>　　答：Const用来申明<a href="http://www.jzxue.com/shujixiazai/wangzhanbiancheng/" target="_blank">编程</a>时申明常量，const字段只能在该字段的声明中初始化。const默认是静态的<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReadOnly用来申明运行时常量。readonly字段可以在声明或构造函数中初始化，根据不同的构造函数，readonly可以有不同的值。readonly设置为静态，是必须先声明的。</p>
<p>　<strong>　20，UDP和TCP连接有和异同?</strong></p>
<p>　　答：TCP是传输控制协议，提供的是面向连接的，是可靠的，字节流服务，当用户和服务器彼此进行数据<a href="http://www.jzxue.com/tag/%BD%BB%BB%A5/" target="_blank">交互</a>的时候，必须在他们数据交互前要进行TCP连接之后才能传输数据。TCP提供超时重拨，检验数据功能。UDP是用户数据报协议，是一个简单的面向数据报的传输协议，是不可靠的连接。</p>
<p>　<strong>　21，进程和线程分别该怎么理解?</strong></p>
<p>　　答：进程是比线程大的程序运行单元，都是由操作系统所体会的系统运行单元，一个程序中至少要有一个进程，有一个进程中，至少要有一个线程，线程的划分尺度要比进程要小，进程拥有独立的内存单元，线程是共享内存，从而极大的提高了程序的运行效率同一个进程中的多个线程可以并发执行。</p>
<p>　　<strong>22，<a href="http://www.jzxue.com/wangzhankaifa/asp/" target="_blank">ASP</a>.NET页面之间传递值的几种方式?</strong></p>
<p>　　答：QueryString,<a href="http://www.jzxue.com/tag/session/" target="_blank">session</a>,<a href="http://www.jzxue.com/tag/cookie/" target="_blank">cookie</a>s,application,<a href="http://www.jzxue.com/fuwuqi/" target="_blank">server</a>.Transfer,respose.redictor，url。</p>
<p>　　<strong>23. 什么叫应用程序域?什么是托管代码?什么是非托管代码?什么是强类型系统?什么是装箱和拆箱?什么是重载?CTS、CLS和CLR分别作何解释?</strong></p>
<p>　　答：应用程序域：就是为安全性，可靠性，隔离性，和版本控制，及卸载程序提供的隔离边界。它通常由运行库宿主创建，应用程序域提供了一个更安全，用途更广的处理单元。它由公共语言运行库围绕同一个应用程序范围内创建的对象建立。</p>
<p>　　托管代码：使用CLR编译语言编辑器<a href="http://www.jzxue.com/wangzhankaifa/" target="_blank">开发</a>编写的代码就叫托管代码。由公共语言运行库环境执行的代码。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 非托管代码：在公共语言运行库环境外部，由操作系统直接执行的代码。</p>
<p>　　CTS是公共类型系统，CLS是公共语言规范，CLR公共语言运行库。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 装箱和拆箱：是把值类型转换为引用类型的过程，是隐式的，相反的过程就是拆箱，是显式的。　<br />&nbsp;&nbsp; 　强类型系统：每个变量和对象都必须具有申明类型。<br /><br /><font style="background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.cnblogs.com/paper/archive/2009/08/01/1536586.html">http://www.cnblogs.com/paper/archive/2009/08/01/1536586.html</a></font></p>
<p><strong><br /></strong><strong>24. 值类型和引用类型的区别?</strong></p>
<p>　　答：值类型的值是存放在堆栈中的，改变其值，不改变变量原有的值，而引用类型的值是存放在栈中的，其引用的地址是存放在堆栈中的，改变其值也就改变了变量原有的值。值类型不允许包含null值，然而可空类型可以将null赋值给值类型l。<br /><font style="background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.cnblogs.com/paper/archive/2009/08/01/1536540.html">http://www.cnblogs.com/paper/archive/2009/08/01/1536540.html</a></font></p>
<p><br />　<strong>　25. ASP.net的身份验证方式有哪些?</strong></p>
<p>　　答：<a href="http://www.jzxue.com/fuwuqi/windows/" target="_blank">windows</a>（<a href="http://www.jzxue.com/fuwuqi/http-iis-apache/" target="_blank">IIs</a>）,forms,passport</p>
<p>　<strong>　26. 解释一下UDDI、WSDL的意义及其作用?</strong></p>
<p>　　答：UDDI是统一描述集成协议，是一套基于<a href="http://www.jzxue.com/shujixiazai/jianzhanxiangguan/" target="_blank">Web</a>的，分布式的，为WEB服务提供的信息注册的实现标准规范，同时为也是为企业本身提供的<a href="http://www.jzxue.com/shujixiazai/jianzhanxiangguan/" target="_blank">Web</a>服务注册以让别的企业能够发现并访问的协议标准。提供了基于标准的规范，用于描述和发现服务，还提供了一组基于因特网的实现。</p>
<p>　　WSDL这是一个基于<a href="http://www.jzxue.com/wangzhankaifa/xml-xslt/" target="_blank">XML</a>的描述WEB服务的接口。</p>
<p>　<strong>　27. 什么是SOAP?</strong></p>
<p>　　答：是简单访问协议。是在分布式环境中，交换信息并实现远程调用的协议。是一个基于XML的协议。使用SOAP，可以不考虑任何传输协议，但通常还是HTTP协议，可以允许任何类型的对象或代码，在任何平台上，以任一种语言相互通信。它是一种轻量级协议。</p>
<p>　<strong>　28. 如何部署一个ASP.net页面?</strong></p>
<p>　　答：vs2003,vs2005里边都有发表机制，vs2003可以发布然后在复制部署。</p>
<p>　　Vs2005可以直接部署到对应的位置。</p>
<p>　　<strong>29. 如何理解.net中的垃圾回收机制?</strong></p>
<p>　　答：.NET中的垃圾回收机制是引用程序对内存的回收和释放。当每次用new关键字创建一个对象时，运行库都要从托管堆中为其分配内存，因为空间是有限的，最终垃圾回收机制是要回收不用的内存的。已释放内存，重新使用。</p>
<p>　　<strong>30. <a href="http://www.jzxue.com/tag/%C3%E6%CF%F2%B6%D4%CF%F3/" target="_blank">面向对象</a>的三大基本原则?</strong></p>
<p>　　答：封装，继承，多态。</p>
<p>　<strong>　31. 在.NET中所有类的基类是?</strong></p>
<p>　　答：object。</p>
<p>　　<strong>32. 能用foreach遍历访问的对象需要实现?</strong></p>
<p>　　答：需要实现IEnumerable接口和<a href="http://www.jzxue.com/tag/get/" target="_blank">Get</a>Enumerator ()方法。</p>
<p>　<strong>　33. Heap与stack的差别?</strong></p>
<p>　　答：Heap是堆，空间是由手动操作分配和释放的，它的存储区很大的自由存储区。</p>
<p>　　Stack是栈，是由是操作系统自动分配和释放的，栈上的空间是有限的。程序在编译期间变量和函数分配内存都是在栈上进行的，且在运行时函数调用时的参数的传递也是在栈上进行的。<br /><br />&nbsp;&nbsp;&nbsp;<strong> 34. 简述 private、 protected、 public、 internal 修饰符的访问权限。<br /></strong>&nbsp;&nbsp;&nbsp;&nbsp; 答 . private : 私有成员, 在类的内部才可以访问。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected : 保护成员，该类内部和继承类中可以访问。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public : 公共成员，完全公开，没有访问限制。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; internal: 在同一命名空间内可以访问。<br />&nbsp;&nbsp;&nbsp;<strong> 35.用.net做B/S结构的系统，您是用几层结构来开发，每一层之间的关系以及为什么要这样分层？<br /></strong>答：一般为3层<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 数据访问层，业务层，表示层。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 数据访问层对<a href="http://www.jzxue.com/shujuku/" target="_blank">数据库</a>进行增删查改。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 业务层一般分为二层，业务表观层实现与表示层的沟通，业务规则层实现用户密码的安全等。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 表示层为了与用户交互例如用户添加表单。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 优点： 分工明确，条理清晰，易于调试，而且具有可扩展性。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 缺点： 增加成本。<br />&nbsp;&nbsp;<strong> 36.net中读写数据库需要用到那些类？他们的作用？<br /></strong>&nbsp;&nbsp;&nbsp; 答：DataSet:数据存储器。DataCommand:执行语句命令。DataAdapter:数据的集合，用语填充。<br />&nbsp;&nbsp;<strong> 37.什么是Code-Behind技术？<br /></strong>&nbsp;&nbsp;&nbsp; 答：代码后植。<br />&nbsp;&nbsp; <strong>38.在.net中，配件的意思是？<br /></strong>&nbsp;&nbsp;&nbsp; 答：程序集。（中间语言，源数据，资源，装配清单）<br />&nbsp;&nbsp; <strong>39.常用的调用WebService的方法有哪些？<br /></strong>答：1.使用WSDL.exe命令行工具。2.使用VS.NET中的Add Web Reference菜单选项<br />&nbsp;&nbsp;<strong> 40..net Remoting 的工作原理是什么？<br /></strong>&nbsp;&nbsp; 答：服务器端向客户端发送一个进程编号，一个程序域编号，以确定对象的位置。<br />&nbsp;&nbsp;<strong>41.在C＃中，string str = null 与 string str = &#8220;&#8221; 请尽量使用文字或图象说明其中的区别。<br /></strong>答：string str = null 是不给他分配内存空间,而string str = "" 给它分配 长度为空字符串的内存空间。<br /><strong>42.请详述在dotnet中类(class)与结构(struct)的异同？<br /></strong>答：Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类 型,是分配在内存的栈上的.<br /><strong>43.分析以下代码，完成填空<br />&nbsp;&nbsp;&nbsp; string strTmp = "abcdefg某某某";<br />&nbsp;&nbsp;&nbsp; int i= System.Text.Encoding.Default.GetBytes(strTmp).Length;<br />&nbsp;&nbsp;&nbsp; int j= strTmp.Length;<br />&nbsp;&nbsp; 以上代码执行完后，i= j=<br /></strong>&nbsp;&nbsp; 答：i=13,j=10<br /><strong>44.<a href="http://www.jzxue.com/shujuku/mssqlserver/" target="_blank">SQL</a>SERVER服务器中，给定表 table1 中有两个字段 ID、LastUpdateDate， ID表示更新的事务号， LastUpdateDate表示更新时的服务器时间，请使用一句SQL语句获得最后更新的事务号<br /></strong>&nbsp;&nbsp; 答：<a href="http://www.jzxue.com/tag/Select/" target="_blank">Select</a> ID FROM table1 Where LastUpdateDate = (Select MAX (LastUpdateDate) FROM table1)<br /><strong>45.简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及 实际中的应用。</strong><br />&nbsp;&nbsp; 答：WS主要是可利用HTTP，穿透防火墙。而Remoting可以利用TCP/<a href="http://www.jzxue.com/tag/IP/" target="_blank">IP</a>，二进制传 送提高效率。<br /><font style="background-color: #f5f5f5">&nbsp;&nbsp;&nbsp;&nbsp; http://www.cn<a href="http://www.jzxue.com/tag/BLOG/" target="_blank">blog</a>s.com/paper/archive/2009/08/01/1536539.<a href="http://www.jzxue.com/wangyesheji/html/" target="_blank">html</a></font><br /><strong>46.公司要求开发一个继承System.Windows.Forms.ListView类的组件，要求达到以下的特殊功能：点击ListView各列列头时，能按照点击列的每行值进行重排<a href="http://www.jzxue.com/tag/%CA%D3%CD%BC/" target="_blank">视图</a>中的所有行 (排序的方式如DataGrid相似)。根据您的知识，请简要谈一下您的 思路<br /></strong>答：根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中。<br /><strong>47.写出一条Sql语句：取出表A中第31到第40记录（SQLServer,以自动增长的ID作为主键,注意：ID可能不是连续的。<br /></strong>&nbsp;&nbsp; 答：解1: select top 10 * from A where id not in (select top 30 id from A)<br />&nbsp;&nbsp; 解2: select top 10 * from A where id &gt;(select max(id) from (select top 30 id from A )as A)<br /><strong>48.GC是什么? 为什么要有GC?<br /></strong>答：GC是垃圾收集器。程序员不用担心内存管理，因为垃圾收集器会自动进行管 理。要请求垃圾收集，可以调用下面的方法一：<br />&nbsp;&nbsp; System.gc()<br />&nbsp;&nbsp;&nbsp; Runtime.getRuntime().gc()<br /><strong>49.启动一个线程是用run()还是start()?<br /></strong>&nbsp;&nbsp; 答：启动一个线程是调用start()方法，使线程所代表的虚拟处理机处于可运行状 态，这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。<br /><strong>50.是否可以继承String类?<br /></strong>答：String类是final类故不可以继承。</p> <img src ="http://www.cnitblog.com/yide/aggbug/80243.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2012-05-23 20:01 <a href="http://www.cnitblog.com/yide/archive/2012/05/23/80243.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>.net--interview4</title><link>http://www.cnitblog.com/yide/archive/2012/05/23/80242.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Wed, 23 May 2012 11:58:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2012/05/23/80242.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/80242.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2012/05/23/80242.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/80242.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/80242.html</trackback:ping><description><![CDATA[<div class="content-body" id="shareBody">
<p><span style="font-size: medium">1 (1)面向对象的语言具有__继承性_性、_封装性_性、_多态性 性。</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">(2)能用foreach遍历访问的对象需要实现 _ IEnumerable 接口或声明_ GetEnumerator 方法的类型。</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">1.c#中的三元运算符是__?:__</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">2.当整数a赋值给一个object对象时，整数a将会被__装箱___?</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">3.类成员有__3__种可访问形式？</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">4.public static const int A=1;这段代码有错误么？是什么？ </span></p>
<p><span style="font-size: medium">const成员都是static所以应该去掉static</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">5.float f=-123.567F;<br />int i=(int)f;<br />i的值现在是_-123____?</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">6.利用operator声明且仅声明了==，有什么错误么? <br />要同时修改Equale和GetHash() ? 重载了"==" 就必须重载 "!="</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">7.委托声明的关键字是___ delegate ___?</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">8.用sealed修饰的类有什么特点？<br />不可被继承</span> </p>
<p><span style="font-size: medium"></span></p>
<p><br />9.在Asp.net中所有的自定义用户控件都必须继承自<br />_ System.Web.UI.UserControl _______?</p><font size="4">
<p>&nbsp;</p></font>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-size: medium">10.在.Net中所有可序列化的类都被标记为__[serializable]___?</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">11.在.Net托管代码中我们不用担心内存漏洞，这是因为有了_ gC __?</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">12.下面的代码中有什么错误吗？<br />_ abstract override 是不可以一起修饰______<br />using System;<br />class A<br />{<br />&nbsp;&nbsp;&nbsp; public virtual void F()<br />&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine("A.F");<br />&nbsp;&nbsp;&nbsp; }<br />}<br />abstract class B:A<br />{<br />&nbsp;&nbsp;&nbsp; public abstract override void F();<br />}</span> </p>
<p><span style="font-size: medium">13.当类T只声明了私有实例构造函数时，则在T的程序文本外部，_不可以_（可以 or 不可以）从T派生出新的类，_不可以_（可以 or 不可以）直接创建T的任何实例。</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">14.下面这段代码有错误么？<br />case():不行 default;<br />switch (i)<br />{<br />case():<br />CaseZero();<br />break;<br />case 1:<br />CaseOne();<br />break;<br />case 2:<br />dufault;<br />CaseTwo();<br />break;<br />}</span> </p>
<p><span style="font-size: medium"><br />15.在.Net中，类System.Web.UI.Page 可以被继承么？<br />可以</span> </p>
<p><br /><span style="font-size: medium">2. 不定项选择：<br />(1) 以下叙述正确的是： B C<br />A. 接口中可以有虚方法。<br />B. 一个类可以实现多个接口。 <br />C. 接口不能被实例化。 <br />D. 接口中可以包含已实现的方法。<br />&nbsp;<br />&nbsp;(2) 从数据库读取记录，你可能用到的方法有：B C D<br />A. ExecuteNonQuery&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />B. ExecuteScalar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />C. Fill&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />D. ExecuteReader</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">2.对于一个实现了IDisposable接口的类，以下哪些项可以执行与释放或重置非托管资源相关的应用程序定义的任务？(多选) ( ABC ) <br />A.Close <br />B.Dispose <br />C.Finalize <br />D.using <br />E.Quit </span></p>
<p>&nbsp;</p>
<p><span style="font-size: medium">3.以下关于ref和out的描述哪些项是正确的？(多选) ( ACD ) <br />A.使用ref参数，传递到ref参数的参数必须最先初始化。 <br />B.使用out参数，传递到out参数的参数必须最先初始化。 <br />C.使用ref参数，必须将参数作为ref参数显式传递到方法。 <br />D.使用out参数，必须将参数作为out参数显式传递到方法。<br />&nbsp;</span> </p>
<p><br /><span style="font-size: medium">1.在对SQL Server 数据库操作时应选用（A）。<br />a)SQL Server .NET Framework 数据提供程序；<br />b)OLE DB .NET Framework 数据提供程序；<br />c)ODBC .NET Framework 数据提供程序；<br />d)Oracle .NET Framework数据提供程序；</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">2.下列选项中，（C）是引用类型。<br />a)enum类型&nbsp;&nbsp; b)struct类型 c)string类型&nbsp;&nbsp; d)int类型</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">3.关于ASP.NET中的代码隐藏文件的描述正确的是（C）<br />a)Web窗体页的程序的逻辑由代码组成，这些代码的创建用于与窗体交互。编程逻辑唯一与用户界面不同的文件中。该文件称作为&#8220;代码隐藏&#8221;文件，如果用C＃创建，该文件将具有&#8220;.ascx.cs&#8221;扩展名。<br />b)项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件。<br />c)项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库（.dll）文件。<br />d)以上都不正确。</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">4.以下描述错误的是（A）<br />a)在C++中支持抽象类而在C#中不支持抽象类。<br />b)C++中可在头文件中声明类的成员而在CPP文件中定义类的成员，在C#中没有头文件并且在同一处声明和定义类的成员。<br />c)在C#中可使用 new 修饰符显式隐藏从基类继承的成员。<br />d)在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">5.C#的数据类型有（A）<br />a)值类型和调用类型； b)值类型和引用类型；c)引用类型和关系类型；d)关系类型和调用类型；</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">6.下列描述错误的是（D）<br />a)类不可以多重继承而接口可以；<br />b)抽象类自身可以定义成员而接口不可以；<br />c)抽象类和接口都不能被实例化；<br />d)一个类可以有多个基类和多个基接口；</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">7.在DOM中，装载一个XML文档的方法（D）<br />a)save方法&nbsp;&nbsp; b)load方法 c)loadXML方法 d)send方法</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">8.下列关于构造函数的描述正确的是（C）<br />a)构造函数可以声明返回类型。<br />b)构造函数不可以用private修饰<br />c)构造函数必须与类名相同<br />d)构造函数不能带参数</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">9.以下是一些C#中的枚举型的定义，其中错误的用法有（）<br />a)public enum var1{ Mike = 100, Nike = 102, Jike }<br />b)public enum var1{ Mike = 100, Nike, Jike }<br />c)public enum var1{ Mike=-1 , Nike, Jike }</span> </p>
<p><span style="font-size: medium">d)public enum var1{ Mike , Nike , Jike }</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">10.int[][] myArray3=new int[3][]{new int[3]{5,6,2},new int[5]{6,9,7,8,3},new int[2]{3,2}}; myArray3[2][2]的值是（D）。<br />a)9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b)2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c)6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d)越界</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">11.接口是一种引用类型，在接口中可以声明（A），但不可以声明公有的域或私有的成员变量。<br />a)方法、属性、索引器和事件； b)方法、属性信息、属性； c)索引器和字段；&nbsp;&nbsp;&nbsp; d)事件和字段；</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">12.ASP.NET框架中，服务器控件是为配合Web表单工作而专门设计的。服务器控件有两种类型，它们是(A )<br />a)HTML控件和Web控件 b)HTML控件和XML控件 c)XML控件和Web控件&nbsp;&nbsp;&nbsp; d)HTML控件和IIS控件</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">13.ASP.NET中，在Web窗体页上注册一个用户控件，指定该控件的名称为&#8221;Mike&#8221;，正确的注册指令为( D)<br />a)&lt;</span><a><span style="font-size: medium">%@Register</span></a><span style="font-size: medium"> TagPrefix = &#8220;Mike&#8221; TagName = &#8220;Space2&#8221; Src = &#8220;myX.ascx&#8221;%&gt;<br />b)&lt;</span><a><span style="font-size: medium">%@Register</span></a><span style="font-size: medium"> TagPrefix = &#8220;Space2&#8221; TagName = &#8220;Mike&#8221; Src = &#8220;myX.ascx&#8221;%&gt;<br />c)&lt;</span><a><span style="font-size: medium">%@Register</span></a><span style="font-size: medium"> TagPrefix = &#8220;SpaceX&#8221; TagName = &#8220;Space2&#8221; Src = &#8220;Mike&#8221;%&gt;<br />d)以上皆非</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">14.在ADO.NET中，对于Command对象的ExecuteNonQuery()方法和ExecuteReader()方法，下面叙述错误的是（C）。<br />a)insert、update、delete等操作的Sql语句主要用ExecuteNonQuery()方法来执行；<br />b)ExecuteNonQuery()方法返回执行Sql语句所影响的行数。<br />c)Select操作的Sql语句只能由ExecuteReader()方法来执行；<br />d)ExecuteReader()方法返回一个DataReder对象；</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">15.下列ASP.NET语句（b）正确地创建了一个与SQL Server 2000数据库的连接。<br />a)SqlConnection con1 = new Connection(&#8220;Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB&#8221;);<br />b)SqlConnection con1 = new SqlConnection(&#8220;Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB&#8221;);<br />c)SqlConnection con1 = new SqlConnection(Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB);<br />d)SqlConnection con1 = new OleDbConnection(&#8220;Data Source = localhost; Integrated Security = SSPI; Initial Catalog = myDB&#8221;);</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">16.Winform中，关于ToolBar控件的属性和事件的描述不正确的是(D)。<br />a)Buttons属性表示ToolBar控件的所有工具栏按钮<br />b)ButtonSize属性表示ToolBar控件上的工具栏按钮的大小，如高度和宽度<br />c)DropDownArrows属性表明工具栏按钮（该按钮有一列值需要以下拉方式显示）旁边是否显示下箭头键<br />d)ButtonClick事件在用户单击工具栏任何地方时都会触发</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">17.在ADO.NET中执行一个存储过程时，如果要设置输出参数则必须同时设置参数的方向和（B ），必要时还要设置参数尺寸。<br />a)大小；&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b)上限；&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c)初始值；&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d)类型；</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">18.如果将窗体的FormBoderStyle设置为None，则( B)。<br />a)窗体没有边框并不能调整大小；&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b)窗体没有边框但能调整大小；<br />c)窗体有边框但不能调整大小；&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d)窗体是透明的；</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">19.如果要将窗体设置为透明的，则( B)<br />a)要将FormBoderStyle属性设置为None；&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b)要将Opacity属性设置为小于100%得值；<br />c)要将locked 属性设置为True；&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d)要将 Enabled属性设置为True；</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">20.下列关于C#中索引器理解正确的是(B/C )<br />a)索引器的参数必须是两个或两个以上&nbsp;&nbsp; b)索引器的参数类型必须是整数型<br />c)索引器没有名字&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d)以上皆非</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">21.下面描述错误的是( C/D)。<br />a)窗体也是控件； b)窗体也是类； c)控件是从窗体继承来的； d)窗体的父类是控件类；</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">22.要对注册表进行操作则必须包含( D)。<br />a)System.ComponentModel命名空间； b)System.Collections命名空间；<br />c)System.Threading命名空间；&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; d)Microsoft.Win32命名空间；</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">23.要创建多文档应用程序，需要将窗体的(D )属性设为true。<br />a)DrawGrid；&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p><span style="font-size: medium">b)ShowInTaskbar；&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p><span style="font-size: medium">c)Enabled；&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></p>
<p><span style="font-size: medium">d)IsMdiContainer；</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">24.如果设treeView1=new TreeView()，则treeView1.Nodes.Add("根节点")返回的是一个 ()类型的值。<br />a)TreeNode；<br />b)int；<br />c)string；<br />d)TreeView；</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">25.下面关于XML的描述错误的是（D）。<br />a)XML提供一种描述结构化数据的方法；<br />b)XML 是一种简单、与平台无关并被广泛采用的标准；<br />c)XML文档可承载各种信息；<br />d)XML只是为了生成结构化文档；</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">1.装箱、拆箱操作发生在: ( C&nbsp;&nbsp; )<br />A.类与对象之间&nbsp;&nbsp; B.对象与对象之间<br />C.引用类型与值类型之间&nbsp;&nbsp; D.引用类型与引用类型之间</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">2.用户类若想支持Foreach语句需要实现的接口是: (&nbsp;&nbsp; A )<br />A.IEnumerable</span> </p>
<p><span style="font-size: medium">B.IEnumerator<br />C.ICollection</span> </p>
<p><span style="font-size: medium">D.ICollectData</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">3..Net Framework通过什么与COM组件进行交互操作？(&nbsp;&nbsp;&nbsp; C )<br />A.Side By Side</span> </p>
<p><span style="font-size: medium">B.Web Service<br />C.Interop</span> </p>
<p><span style="font-size: medium">D.PInvoke</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">4..Net依靠以下哪一项技术解决COM存在的Dll Hell问题的？( A&nbsp;&nbsp; )<br />A.Side By Side</span> </p>
<p><span style="font-size: medium">B.Interop<br />C.PInvoke</span> </p>
<p><span style="font-size: medium">D.COM+</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">5.装箱与拆箱操作是否是互逆的操作？(&nbsp;&nbsp; B )<br />A.是B.否</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">6.以下哪个是可以变长的数组？(&nbsp;&nbsp; D )<br />A.Array&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B.string[]<br />C.string[N]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D.ArrayList</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">7.用户自定义异常类需要从以下哪个类继承：(&nbsp;&nbsp; A )<br />A.Exception&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B.CustomException<br />C.ApplicationException&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D.BaseException</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">8.以下代码段中能否编译通过？请给出理由。<br />try<br />{<br />}<br />catch(FileNotFoundException e1)<br />{<br />}<br />catch(Exception e2)<br />{<br />}<br />catch(IOException e3)<br />{<br />}<br />catch<br />{<br />} </span></p>
<p>&nbsp;</p>
<p><span style="font-size: medium">9.对于一个实现了IDisposable接口的类，以下哪些项可以执行与释放或重置非托管资源相关的应用程序定义的任务？(多选) (&nbsp;&nbsp;&nbsp; ABC&nbsp;&nbsp;&nbsp;&nbsp; )<br />A.Close&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B.DisposeC.Finalize<br />D.using&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; E.Quit</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">10.Net依赖以下哪项技术实现跨语言互用性？(&nbsp;&nbsp; C )<br />A.CLR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B.CTS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C.CLS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D.CTT</span> </p>
<p>&nbsp;</p>
<p><span style="font-size: medium">11.请问: String类与StringBuilder类有什么区别？为什么在.Net类库中要同时存在这2个类？(简答)<br />如果要操作一个不断增长的字符串，尽量不用String类,改用StringBuilder类。两个类的工作原理不同:String类是一种传统的修改字符串的方式，它确实可以完成把一个字符串添加到另一个字符串上的工作没错,但是在.NET框架下，这个操作实在是划不来。因为系统先是把两个字符串写入内存，接着删除原来的String对象，然后创建一个String对象，并读取内存中的数据赋给该对象。这一来二去的，耗了不少时间。而使用System.Text命名空间下面的StringBuilder类就不是这样了，它提供的Append方法，能够在已有对象的原地进行字符串的修改，简单而且直接。当然，一般情况下觉察不到这二者效率的差异，但如果你要对某个字符串进行大量的添加操作，那么StringBuilder类所耗费的时间和String类简直不是一个数量级的。 </span></p>
<p>&nbsp;</p>
<p><span style="font-size: medium">12.以下哪个类是int的基类？(&nbsp;&nbsp;&nbsp; )<br />A.Int32&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B.Object&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C.ValueType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D.Int16 </span></p><!--XN_AntiSpam_Robot 2009-06-16--></div> <img src ="http://www.cnitblog.com/yide/aggbug/80242.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2012-05-23 19:58 <a href="http://www.cnitblog.com/yide/archive/2012/05/23/80242.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>.net--interview3</title><link>http://www.cnitblog.com/yide/archive/2012/05/23/80241.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Wed, 23 May 2012 11:55:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2012/05/23/80241.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/80241.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2012/05/23/80241.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/80241.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/80241.html</trackback:ping><description><![CDATA[<strong>任何一个使用.NET的人</strong> 
<p taggedby="hylanda">　　描述线程与进程的区别？</p>
<p taggedby="hylanda">答:线程是进程的一部分，进程是程序的一部分。</p>
<p taggedby="hylanda">　　什么是Windows服务，它的生命周期与标准的EXE程序有什么不同</p>
<p taggedby="hylanda">答:Windows Service 是主要用于服务器环境而长期运行的应用程序， 这类程序不需要有用户界面或者任何模拟输出。 任何的用户消息通常都是记录在Windows 事件日志里。Windows Service可以在操作系统启动的时候开始，一直在后台运行，当有需要时也可以手动启动，我们可以通过管理工具里面的服务进行统一管理。当系统启动完毕后，Windows服务并不需要通过登陆页面后才能启动，而我们启动一般的exe文件却要先登陆Windows后才能启动它</p>
<p taggedby="hylanda">　　EXE和DLL之间的区别是什么？</p>
<p taggedby="hylanda">答:现在的Windows中，exe 和 dll 都是基于PE格式，exe 是通常的可执行文件，包含数据和代码，而 dll 是动态链接文件，也有可能是纯资源文件，只包含数据，不含程序代码。ddl 的目的之一就是提供能被许多不同的应用程序所使用的函数和资源。dll 中的函数和资源为软件开发提供了复用。它们是在运行时由磁盘物理映像载入被调用者的内存空间或共享内存空间执行。</p>
<p taggedby="hylanda">　　什么是强类型，什么是弱类型？哪种更好些？为什么?</p>
<p taggedby="hylanda">答案:弱类型语言允许将一块内存看做多种类型。比如直接将整型变量与字符变量相加。C and C++ 是静态语言，也是弱类型语言；Perl and PHP 是动态语言，但也是弱类型语言。</p>
<p>强类型语言在没有强制类型转化前，不允许两种不同类型的变量相互操作。Java、C# 和 Python 等都是强类型语言。</p>
<p>使用哪种语言还是要按需而定。编写简单小应用，使用弱类型语言可节省很多代码量，有更高的开发效率。而对于构建大型项目，使用强类型语言可能会比使用弱类型更加规范可靠。</p>
<p taggedby="hylanda">　　PID是什么？在做系统的故障排除时如何使用它？</p>
<p taggedby="hylanda">答案:PID = Process Identifier, 是一个全局唯一的用来标识进程的整数。在多任务系统中，可用来诊断系统中发生错误的进程。</p>
<p taggedby="hylanda">　　单个TCP/IP端口上能够侦听多少个进程？</p>
<p taggedby="hylanda">答:可能只有一个。如果你需要创建另一个TCP/IP监听，你必须建立另一个不同的端口</p>
<p taggedby="hylanda">　　什么是GAC？它解决了什么问题?</p>
<p taggedby="hylanda">答案:作用是可以存放一些有很多程序都要用 到的公共Assembly，例如System.Data、System.Windows.Forms等等。这样，很多程序就可以从GAC里面取得 Assembly，而不需要再把所有要用到的Assembly都拷贝到应用程序的执行目录下面</p>
<p taggedby="hylanda">　　<strong taggedby="hylanda">中级.NET开发人员</strong></p>
<p taggedby="hylanda">　　阐述面向接口、面向对象、面向方面编程的区别</p>
<p taggedby="hylanda">　　什么是Interface？它与Class有什么区别？</p>
<p taggedby="hylanda">答:接口(Interface)是用来定义行为规范的，不会有具体实现，而抽象类除定义行为规范外，可以有部分实现，但一个类能实现多个接口，但只能继承一个父类 <br /></p>
<p taggedby="hylanda">　　什么是反射?</p>
<p taggedby="hylanda">答:反射（Reflection）是.NET中的重要机制，通过放射，可以在运行时获得.NET中每一个类型（包括类、结构、委托、接口和枚举等）的成员，包括方法、属性、事件，以及构造函数等。还可以获得每个成员的名称、限定符和参数等。有了反射，即可对每一个类型了如指掌。如果获得了构造函数的信息，即可直接创建对象，即使这个对象的类型在编译时还不知道。 <br /><br /></p>
<p taggedby="hylanda">　　DateTime是否可以为null?</p>
<p taggedby="hylanda">答:不能,因为其为Struct类型，而结构属于值类型，值类型不能为null,只有引用类型才能被赋值null</p>
<p taggedby="hylanda">　　　Finalize()和Dispose()之间的区别?</p>
<p taggedby="hylanda">　　using() 语法有用吗？什么是IDisposable？它是如何实现确定性终结的。</p>
<p taggedby="hylanda">　　tasklist /m "mscor*" 这句命令是干嘛的？</p>
<p taggedby="hylanda">　　in-proc和out-of-proc的区别</p>
<p taggedby="hylanda">　　.NET里的哪一项技术能够实现out-of-proc通讯？</p>
<p taggedby="hylanda">　　当你在ASP.NET中运行一个组件时，它在Windows XP, Windows 2000, Windows 2003上分别跑在哪个进程里面？</p>
<p taggedby="hylanda">　　<strong taggedby="hylanda">高级开发人员/架构师</strong></p>
<p taggedby="hylanda">　　DateTime.Parse(myString); 这行代码有什么问题？</p>
<p taggedby="hylanda">　　PDB是什么东西? 在调试中它应该放在哪里？</p>
<p taggedby="hylanda">　　什么叫圈复杂度（cyclomatic complexity）？为什么它很重要？</p>
<p taggedby="hylanda">　　写一个标准的lock()，在访问变量的前后创建临界区，要有"双重检查"，</p>
<p taggedby="hylanda">　　什么叫FullTrust？放入GAC的assembly是否是FullTrust的?</p>
<p taggedby="hylanda">　　代码加上需要安全权限的特性有什么好处？</p>
<p taggedby="hylanda">　　gacutil /l | find /i "Corillian" 这句命令的作用是什么？</p>
<p taggedby="hylanda">　　sn -t foo.dll 这句命令是干嘛的？</p>
<p taggedby="hylanda">　　DCOM需要防火墙打开哪些端口？端口135是干嘛用的？</p>
<p taggedby="hylanda">　　对比OOP和SOA，它们的目的分别是什么？</p>
<p taggedby="hylanda">　　XmlSerializer是如何工作的？使用这个类的进程需要什么ACL权限？</p>
<p taggedby="hylanda">　　为什么不提倡catch(Exception)？</p>
<p taggedby="hylanda">　　Debug.Write和Trace.Write有什么不同？何时应该使用哪一个？</p>
<p taggedby="hylanda">　　Debug Build和Release Build的区别，是否会有明显的速度变化？请说明理由。</p>
<p taggedby="hylanda">　　JIT是以assembly为单位发生还是以方法为单位发生？这对于工作区有何影响?</p>
<p taggedby="hylanda">　　对比抽象基类和接口的使用</p>
<p taggedby="hylanda">　　a.Equals(b)和a == b一样吗？</p>
<p taggedby="hylanda">　　在对象比较中，对象一致和对象相等分别是指什么？</p>
<p taggedby="hylanda">　　在.NET中如何实现深拷贝（deep copy）？</p>
<p taggedby="hylanda">　　请解释一下IClonable</p>
<p taggedby="hylanda">　　什么叫装箱?</p>
<p taggedby="hylanda">　　string是值类型还是引用类型?</p>
<p taggedby="hylanda">　　XmlSerializer使用的针对属性的模式有什么好处？解决了什么问题？</p>
<p taggedby="hylanda">　　为什么不应该在.NET中使用out参数？它究竟好不好?</p>
<p taggedby="hylanda">　　特性能够放到某个方法的参数上？如果可以，这有什么用？ 　　</p>
<p taggedby="hylanda">　什么时候使用override？什么时候使用new? 什么叫shadowing?</p>
<p taggedby="hylanda">　　解释virtual、sealed、override和abstract的区别</p>
<p taggedby="hylanda">　　Foo.Bar, Version=2.0.205.0, Culture=neutral, PublicKeyToken=593777ae2d274679d 解释这个字符串每个部分的重要性和作用</p>
<p taggedby="hylanda">　　解释public、protected、private和internal的区别</p>
<p taggedby="hylanda">　　使用Primary Interop Assembly (PIA)有什么好处?</p>
<p taggedby="hylanda">　　NUnit是通过什么机制获知需要测试哪些方法的？</p>
<p taggedby="hylanda">　　catch(Exception e){throw e;}和catch(Exception e)的区别</p>
<p taggedby="hylanda">　　typeof(foo)和myFoo.GetType()的区别?</p>
<p taggedby="hylanda">　　public class c{ public c(string a) : this() ; public c() } 解释第一个构造函数中发生了什么？ 这个构造函数有什么用?</p>
<p taggedby="hylanda">　　this是干嘛用的？能够用在static方法中？</p>
<p taggedby="hylanda">　　<strong taggedby="hylanda">ASP.NET (UI)开发人员</strong></p>
<p taggedby="hylanda">　　阐述一个基于浏览器的Form POST如何变成一个服务器端的事件，如Button1_OnClick。</p>
<p taggedby="hylanda">　　什么是PostBack?</p>
<p taggedby="hylanda">　　什么是ViewState? 它是否被编码过? 是否被加密过？谁会使用ViewState?</p>
<p taggedby="hylanda">　　<machinekey></machinekey>元素是干嘛用的？它用于哪两项ASP.NET技术?</p>
<p taggedby="hylanda">　　说出ASP.NET 1.1中的3种Session State提供程序以及它们的优缺点?</p>
<p taggedby="hylanda">　　什么叫Web Gardening? 在设计中如何使用它?</p>
<p taggedby="hylanda">　　假设有一个ASP.NET应用程序，那么单独一个进程中允许多少应用程序对象？那两个进程呢？启用了Web Gardening的2个进程呢？这对设计有何影响？</p>
<p taggedby="hylanda">　　ASP.NET会重用多个请求之间的线程吗？是否每个HttpRequest都有自己的线程？你是否应该用ASP.NET的Thread Local存储？</p>
<p taggedby="hylanda">　　[ThreadStatic]属性在ASP.NET中有用吗？它有没有副作用？是好是坏？</p>
<p taggedby="hylanda">　　如何使用HttpHandler简化现有的为.aspx页面提供验证图片的设计</p>
<p taggedby="hylanda">　　HttpModule订阅的是什么类型的事件? 这对于实现有何影响？如果不打算重新编译ASP.NE应用程序，应该怎么做？</p>
<p taggedby="hylanda">　　说出表示任意一个终端（URL）的方式，以及ASP.NET中把请求路由到那个终点的方式</p>
<p taggedby="hylanda">　　解释cookie的工作原理。给出一个滥用Cookie的例子。</p>
<p taggedby="hylanda">　　解释HttpRequest.ValidateInput()的重要性？</p>
<p taggedby="hylanda">　　哪些数据是通过HTTP Header传递的?</p>
<p taggedby="hylanda">　　对比HTTP动词GET和POST? 什么是HEAD?</p>
<p taggedby="hylanda">　　说出至少6个HTTP状态码以及它们的含义</p>
<p taggedby="hylanda">　　if-not-modified-since的工作原理是什么? 用ASP.NET如何实现它？</p>
<p taggedby="hylanda">　　解释 &lt;@OutputCache%&gt;和如何使用VaryByParam、VaryByHeader.</p>
<p taggedby="hylanda">　　VaryByCustom是如何工作的?</p>
<p taggedby="hylanda">　　如何通过q=? （除了q=5）来实现ASP.NET HTML输出缓冲和缓冲过期(比如http://localhost/page.aspx?q=5)?</p>
<p taggedby="hylanda">　　<strong taggedby="hylanda">XML开发人员</strong></p>
<p taggedby="hylanda">　　XML命名空间的作用?</p>
<p taggedby="hylanda">　　何时适合使用DOM？何时不适合？有没有尺度限制？</p>
<p taggedby="hylanda">　　什么是WS-I基本配置？它重要在哪里？</p>
<p taggedby="hylanda">　　写一个小XML文档，其中使用的是默认的命名空间，以及一个合法的（前缀）命名空间，其中要有分别属性这两个命名空间的元素</p>
<p taggedby="hylanda">　　元素和特性的基本区别在哪里？</p>
<p taggedby="hylanda">　　格式完好的XML和有效的XML有什么区别？</p>
<p taggedby="hylanda">　　.NET中如何验证XML？</p>
<p taggedby="hylanda">　　myXmlDocument.SelectNodes("//mynode"); 为什么这句代码不好？什么时候它是好的？</p>
<p taggedby="hylanda">　　拉式解析(XmlReader)与事件读取器(Sax)的区别</p>
<p taggedby="hylanda">　　XPathDocument和XmlDocument的区别? 在何种情况下应该用哪一个？</p>
<p taggedby="hylanda">　　&#8220;XML片断&#8221;与&#8220;XML文档&#8221;有什么区别</p>
<p taggedby="hylanda">　　什么叫格式规范的XML？</p>
<p taggedby="hylanda">　　XML InfoSet规范与Xml DOM有什么不同? InfoSet是要解决什么问题？</p>
<p taggedby="hylanda">　　比较DTD和XSD，它们的相似点与区别分别是什么？哪个更好些？为什么？</p>
<p taggedby="hylanda">　　System.Xml支持DTD吗？如果支持，如何使用？</p>
<p taggedby="hylanda">　　XML Schema能够表示为对象图？对象图能够表示为XML Schema？</p> <img src ="http://www.cnitblog.com/yide/aggbug/80241.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2012-05-23 19:55 <a href="http://www.cnitblog.com/yide/archive/2012/05/23/80241.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>.net--interview2</title><link>http://www.cnitblog.com/yide/archive/2012/05/22/80189.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Tue, 22 May 2012 06:51:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2012/05/22/80189.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/80189.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2012/05/22/80189.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/80189.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/80189.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1.&nbsp;简述&nbsp;private、&nbsp;protected、&nbsp;public、&nbsp;internal&nbsp;修饰符的访问权限。答&nbsp;. private :&nbsp;&nbsp;&nbsp;私有成员,&nbsp;在类的内部才可以访问。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;protected :&nbsp;保护成员，该类内部...&nbsp;&nbsp;<a href='http://www.cnitblog.com/yide/archive/2012/05/22/80189.html'>阅读全文</a><img src ="http://www.cnitblog.com/yide/aggbug/80189.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2012-05-22 14:51 <a href="http://www.cnitblog.com/yide/archive/2012/05/22/80189.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>jquery参考资料-网址</title><link>http://www.cnitblog.com/yide/archive/2012/05/01/79458.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Tue, 01 May 2012 01:31:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2012/05/01/79458.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/79458.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2012/05/01/79458.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/79458.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/79458.html</trackback:ping><description><![CDATA[<br /><br /><a href="http://jquery-api-zh-cn.googlecode.com/svn/trunk/index.html">http://jquery-api-zh-cn.googlecode.com/svn/trunk/index.html</a><br /><br /><a href="http://v.youku.com/v_playlist/f6596174o1p0.html">http://v.youku.com/v_playlist/f6596174o1p0.html</a><br /><br /><br /><br /><br /> <img src ="http://www.cnitblog.com/yide/aggbug/79458.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2012-05-01 09:31 <a href="http://www.cnitblog.com/yide/archive/2012/05/01/79458.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AJAX--不具有名为xxxxx的公共属性 解决方法 </title><link>http://www.cnitblog.com/yide/archive/2012/04/30/79432.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Mon, 30 Apr 2012 05:27:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2012/04/30/79432.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/79432.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2012/04/30/79432.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/79432.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/79432.html</trackback:ping><description><![CDATA[<div id="article_content" class="article_content">
<p>类型&#8220;system.web.ui.updatepanel&#8221; 不具有名为xxxxx的公共属性 解决方法 </p>
<div id="app-share-container">
<div id="app-share-content">类型&#8220;system.web.ui.updatepanel&#8221; 不具有名为&#8220;***&#8221;的公共属性,<br />其实原因很简单。就是少了一个<span style="color: #ff0000"><strong><strong><br /></strong><span style="color: #000000">&lt;asp:UpdatePanel ID="UpdatePanel1" runat="server"&gt;<br /></span><span style="color: #000000"><strong><span style="color: #ff0000">&lt;ContentTemplate&gt;</span><br /><br />code.............<br /><br /><span style="color: #ff0000">&lt;/ContentTemplate&gt;</span><br /></strong>&lt;/asp:UpdatePanel&gt;</span></strong></span><strong><br /><br />正确的如下：<br /><br /></strong>&lt;asp:ScriptManager ID="ScriptManager1" runat="server"&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/asp:ScriptManager&gt;<br />&nbsp;&nbsp;&nbsp; &lt;asp:UpdatePanel ID="UpdatePanel1" runat="server"&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;ContentTemplate&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;asp:DataList id="datalistNews" Width="98%" Runat="server" DataKeyField="ID" OnItemCommand="datalistNews_ItemCommand" OnItemCreated="datalistNews_ItemCreated" OnItemDataBound="datalistNews_ItemDataBound"&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/asp:DataList&gt;<br />&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &lt;/ContentTemplate&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/asp:UpdatePanel&gt;</div></div></div><img src ="http://www.cnitblog.com/yide/aggbug/79432.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2012-04-30 13:27 <a href="http://www.cnitblog.com/yide/archive/2012/04/30/79432.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AJAX控件功能---使用说明</title><link>http://www.cnitblog.com/yide/archive/2012/04/30/79429.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Mon, 30 Apr 2012 04:53:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2012/04/30/79429.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/79429.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2012/04/30/79429.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/79429.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/79429.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1. Accordion【功能概述】 Accordion 可以让你设计多个panel 并且一次只显示一个Panel .在页面上的显示效果就像是使用了多个CollapsiblePanels只不过每一次只展开其中一个CollapsiblePanel.Accordion控件内部包含了若干个AccordionPane，每一个AccordionPane的template里包括了对其Header和Cont...&nbsp;&nbsp;<a href='http://www.cnitblog.com/yide/archive/2012/04/30/79429.html'>阅读全文</a><img src ="http://www.cnitblog.com/yide/aggbug/79429.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2012-04-30 12:53 <a href="http://www.cnitblog.com/yide/archive/2012/04/30/79429.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AjaxControlToolkit 控件说明</title><link>http://www.cnitblog.com/yide/archive/2012/04/30/79426.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Mon, 30 Apr 2012 04:05:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2012/04/30/79426.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/79426.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2012/04/30/79426.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/79426.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/79426.html</trackback:ping><description><![CDATA[<div id="cnblogs_post_body">
<p>1 Accordion 2 AccordionPane&nbsp; 实现多面板，但一次只显示其中一个面板中的内容</p>
<p>3 AlwaysVisibleControlExtender 不论鼠标怎么滚动，都显示某个内容</p>
<p>4 AnimationExtender 5 AnimationExtenderControlBase 实现控件中内容的动画效果（移动、变化大小、淡如淡出、变颜色等）</p>
<p>6 AutoCompleteExtender 文本框自动完成功能</p>
<p>7 CalendarExtender 日历控件</p>
<p>8 CascadingDropDown 级联下拉菜单</p>
<p>9 CollapsiblePanelExtender 卷起面板</p>
<p>10 ConfirmButtonExtender 确认按钮</p>
<p>11 DraggableListItemExtender 12 DragPanelExtender&nbsp; 拖动控件</p>
<p>13 DropDownExtender 给任意控件添加下拉菜单</p>
<p>14 DropShadowExtender&nbsp; 收起/扩展面板功能</p>
<p>15 DynamicPopulateExtender&nbsp; 动态生成控件中的内容</p>
<p>16 FilteredTextBoxExtender 文本框内容过滤</p>
<p>17 HoverExtender 18 HoverMenuExtender 鼠标停留出现菜单</p>
<p>19 ListSearchExtender 为下拉菜单添加字母查找功能</p>
<p>20 MaskedEditExtender 21 MaskedEditValidator&nbsp; 输入框格式限定功能</p>
<p>22 ModalPopupExtender 出现模式对话框功能</p>
<p>23 MutuallyExclusiveCheckBoxExtender 多个选项某个选项独占功能</p>
<p>24 NoBot 防爬虫/机器输入功能</p>
<p>25 NumericUpDownExtender 数字值增减</p>
<p>26 PagingBulletedListExtender 按字母顺序的bbs功能</p>
<p>27 PasswordStrength&nbsp; 密码强度控件</p>
<p>28 PopupControlExtender&nbsp; 29 PopupExtender&nbsp;&nbsp; 给任意控件添加小窗口</p>
<p>30 Rating&nbsp; 评级控件</p>
<p>31 ReorderList 任意添加列表内容并更改列表顺序</p>
<p>32 ResizableControlExtender 控件大小改变</p>
<p>33 RoundedCornersExtender 圆角</p>
<p>34 SliderExtender 类似音量大小那种拖动条空间</p>
<p>35 SlideShowExtender&nbsp;&nbsp; 幻灯片一张张播放图片</p>
<p>36 TabContainer&nbsp; 36 TabPanel&nbsp;&nbsp; tab控件</p>
<p>37 TextBoxWatermarkExtender&nbsp; 文本输入框提示文字控件</p>
<p>38 ToggleButtonExtender&nbsp; 可改变的按钮，实际上是一个有图片的checkbox</p>
<p>39 UpdatePanelAnimationExtender&nbsp; 面板内容改变时动画有效果控件</p>
<p>40 ValidatorCalloutExtender 增强的输入验证控件</p></div><img src ="http://www.cnitblog.com/yide/aggbug/79426.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2012-04-30 12:05 <a href="http://www.cnitblog.com/yide/archive/2012/04/30/79426.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>vs2008添加Ajax vs2008 Ajax配置</title><link>http://www.cnitblog.com/yide/archive/2012/04/30/79423.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Mon, 30 Apr 2012 03:27:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2012/04/30/79423.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/79423.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2012/04/30/79423.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/79423.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/79423.html</trackback:ping><description><![CDATA[&nbsp; 
<p style="text-align: left; margin: 3.75pt 0cm; word-break: break-all; mso-pagination: widow-orphan" class="MsoNormal" align="left"><strong><span style="font-family: 宋体; color: red; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt">重点：</span></strong><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; margin: 3.75pt 0cm; word-break: break-all; mso-pagination: widow-orphan" class="MsoNormal" align="left"><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1</span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">）不要安装</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">ASP.NET 2.0 AJAX Extensions 1.0 </span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">和</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US"> ASP.NET 2.0 AJAX Templates for VS2008<o:p></o:p></span></p>
<p style="text-align: left; margin: 3.75pt 0cm; word-break: break-all; mso-pagination: widow-orphan" class="MsoNormal" align="left"><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">原因：因为</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">VS2008</span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">已经默认支持</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">Ajax</span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">了。如果你装了这个，以后在工具栏中则无法显示</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">AjaxControlToolkit</span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">的控件了。</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; margin: 3.75pt 0cm; word-break: break-all; mso-pagination: widow-orphan" class="MsoNormal" align="left"><strong><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt">安装步骤：</span></strong><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; margin: 3.75pt 0cm; word-break: break-all; mso-pagination: widow-orphan" class="MsoNormal" align="left"><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1</span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">）下载</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt"> <span lang="EN-US"><a title="AjaxControlToolkit-Framework3.5" href="http://www.codeplex.com/AjaxControlToolkit/Release/ProjectReleases.aspx?ReleaseId=11121" target="_blank"><span style="color: #075db3">AjaxControlToolkit-Framework3.5</span></a></span></span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">（一定要下</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">AjaxControlToolkit-Framework3.5 </span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">而不是</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US"> AjaxControlToolkit</span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">）。</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; margin: 3.75pt 0cm; word-break: break-all; mso-pagination: widow-orphan" class="MsoNormal" align="left"><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2</span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">）解压缩，打开</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">AjaxControlToolkit</span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">解决方案，然后编译。</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; margin: 3.75pt 0cm; word-break: break-all; mso-pagination: widow-orphan" class="MsoNormal" align="left"><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * </span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">编译时如果报错：</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; margin: 3.75pt 0cm; word-break: break-all; mso-pagination: widow-orphan" class="MsoNormal" align="left"><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">未能加载文件或程序集</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">&#8220;vjslib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a&#8221;&#8230;&#8230;</span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">，</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; margin: 3.75pt 0cm; word-break: break-all; mso-pagination: widow-orphan" class="MsoNormal" align="left"><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">则需安装</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US"><a title="Microsoft Visual J# 2.0 Redistributable Package" href="http://www.microsoft.com/downloads/details.aspx?displaylang=zh-cn&amp;FamilyID=f72c74b3-ed0e-4af8-ae63-2f0e42501be1" target="_blank"><span style="color: #075db3">Visual J# 2.0 Redistributable Package</span></a> </span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">。</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; margin: 3.75pt 0cm; word-break: break-all; mso-pagination: widow-orphan" class="MsoNormal" align="left"><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3</span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">）编译后找到</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US"> ..\AjaxControlToolkit-Framework3.5\SampleWebSite\Bin </span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">下的</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US"> AjaxControlToolkit.dll </span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">文件，将其复制到</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; margin: 3.75pt 0cm; word-break: break-all; mso-pagination: widow-orphan" class="MsoNormal" align="left"><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C:\Program Files\Microsoft ASP.NET\AjaxControlToolkit-Framework3.5 </span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">目录下（没有这个目录则创建，一般需要创建此目录）。</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; margin: 3.75pt 0cm; word-break: break-all; mso-pagination: widow-orphan" class="MsoNormal" align="left"><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4</span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">）打开</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US"> VS2008 </span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">新建项目</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">&#8212;&#8212; ASP.NET </span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">应用程序。</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; margin: 3.75pt 0cm; word-break: break-all; mso-pagination: widow-orphan" class="MsoNormal" align="left"><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5</span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">）右键单击工具栏，选择</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">&#8220;</span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">添加选项卡</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">&#8221;</span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">并命名为</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US"> &#8220;AJAX Extensions ToolBox&#8221;</span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">，然后在该选项卡内部右键选择</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">&#8220;</span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">选择项</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">&#8221;</span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">。</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; margin: 3.75pt 0cm; word-break: break-all; mso-pagination: widow-orphan" class="MsoNormal" align="left"><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6</span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">）在</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">&#8220;</span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">选择项</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">&#8221;</span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">选项卡中单击</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">&#8220;</span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">浏览</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">&#8221;</span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">，找到</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US"> 3</span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">）中的文件，然后确定。</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; margin: 3.75pt 0cm; word-break: break-all; mso-pagination: widow-orphan" class="MsoNormal" align="left"><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OK</span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">，一切完成，现在工具栏中应该有</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">AjaxControlToolkit</span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">的那些控件了。</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; margin: 3.75pt 0cm; word-break: break-all; mso-pagination: widow-orphan" class="MsoNormal" align="left"><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tips</span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">：第</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US">3</span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">）至</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US"> 6</span><span style="font-family: 宋体; color: #393939; mso-bidi-font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt">）步，可以通过鼠标拖拽这一步来实现。</span><span style="font-family: 'Verdana','sans-serif'; color: #393939; mso-fareast-font-family: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt; mso-bidi-font-size: 10.5pt" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p style="text-align: left; line-height: 16.5pt;background: #fffcf6; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal" align="left"><span style="font-family: 'Arial','sans-serif'; font-size: 12pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">1</span><span style="font-family: 宋体; font-size: 12pt; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-font-kerning: 0pt">、下载后解压，这个不用教吧。</span><span style="font-family: 'Arial','sans-serif'; font-size: 12pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt"> <span lang="EN-US"><o:p></o:p></span></span></p>
<p style="text-align: left; line-height: 16.5pt;background: #fffcf6; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal" align="left"><span style="font-family: 'Arial','sans-serif'; font-size: 12pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">2</span><span style="font-family: 宋体; font-size: 12pt; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-font-kerning: 0pt">、打开</span><span style="font-family: 'Arial','sans-serif'; font-size: 12pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">VS 2005</span><span style="font-family: 宋体; font-size: 12pt; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-font-kerning: 0pt">或者</span><span style="font-family: 'Arial','sans-serif'; font-size: 12pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">VS 2008</span><span style="font-family: 宋体; font-size: 12pt; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-font-kerning: 0pt">，随便建个网站项目</span><span style="font-family: 'Arial','sans-serif'; font-size: 12pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt"> <span lang="EN-US"><o:p></o:p></span></span></p>
<p style="text-align: left; line-height: 16.5pt;background: #fffcf6; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal" align="left"><span style="font-family: 'Arial','sans-serif'; font-size: 12pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">3</span><span style="font-family: 宋体; font-size: 12pt; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-font-kerning: 0pt">、右键单击工具箱</span><span style="font-family: 'Arial','sans-serif'; font-size: 12pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">&#8220;</span><span style="font-family: 宋体; font-size: 12pt; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-font-kerning: 0pt">添加选项卡</span><span style="font-family: 'Arial','sans-serif'; font-size: 12pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">&#8221; <o:p></o:p></span></p>
<p style="text-align: left; line-height: 16.5pt;background: #fffcf6; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal" align="left"><span style="font-family: 'Arial','sans-serif'; font-size: 12pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">4</span><span style="font-family: 宋体; font-size: 12pt; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-font-kerning: 0pt">、右键单击那好的选项卡的空白处，点</span><span style="font-family: 'Arial','sans-serif'; font-size: 12pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">&#8220;</span><span style="font-family: 宋体; font-size: 12pt; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-font-kerning: 0pt">选择项</span><span style="font-family: 'Arial','sans-serif'; font-size: 12pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">&#8221; <o:p></o:p></span></p>
<p style="text-align: left; line-height: 16.5pt;background: #fffcf6; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal" align="left"><span style="font-family: 'Arial','sans-serif'; font-size: 12pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">5</span><span style="font-family: 宋体; font-size: 12pt; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-font-kerning: 0pt">、最重要在弹出对话框上点</span><span style="font-family: 'Arial','sans-serif'; font-size: 12pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">&#8220;</span><span style="font-family: 宋体; font-size: 12pt; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-font-kerning: 0pt">浏览</span><span style="font-family: 'Arial','sans-serif'; font-size: 12pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">&#8221;</span><span style="font-family: 宋体; font-size: 12pt; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-font-kerning: 0pt">，并选择你解压的目录下的</span><span style="font-family: 'Arial','sans-serif'; font-size: 12pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">SampleWebSite\bin\AjaxControlToolkit.dll <o:p></o:p></span></p>
<p style="text-align: left; line-height: 16.5pt;background: #fffcf6; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal" align="left"><span style="font-family: 'Arial','sans-serif'; font-size: 12pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US">6</span><span style="font-family: 宋体; font-size: 12pt; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-font-kerning: 0pt">、点击确定，可以用了。</span><span style="font-family: 'Arial','sans-serif'; font-size: 12pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p style="text-align: left; line-height: 16.5pt;background: #fffcf6; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal" align="left"><span style="font-family: 'Arial','sans-serif'; font-size: 12pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p style="text-align: left; line-height: 16.5pt;background: #fffcf6; mso-pagination: widow-orphan; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt" class="MsoNormal" align="left"><span style="font-family: 宋体; font-size: 12pt; mso-bidi-font-family: Arial; mso-ascii-font-family: Arial; mso-hansi-font-family: Arial; mso-font-kerning: 0pt">有什么不懂的可以发信息来。</span><span style="font-family: 'Arial','sans-serif'; font-size: 12pt; mso-fareast-font-family: 宋体; mso-font-kerning: 0pt" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p>&nbsp;</o:p></span></p><img src ="http://www.cnitblog.com/yide/aggbug/79423.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2012-04-30 11:27 <a href="http://www.cnitblog.com/yide/archive/2012/04/30/79423.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c#--interview1</title><link>http://www.cnitblog.com/yide/archive/2012/04/30/79417.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Mon, 30 Apr 2012 01:11:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2012/04/30/79417.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/79417.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2012/04/30/79417.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/79417.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/79417.html</trackback:ping><description><![CDATA[<p>2 .列举ASP.NET 页面之间传递值的几种方式。 <br />答. 1).使用QueryString, 如....?id=1; response. Redirect().... <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2).使用Session变量 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3).使用Server.Transfer</p>
<p>3. 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少， 用递归算法实现。<br />答：public class MainClass <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void Main() <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine(Foo(30)); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static int Foo(int i) <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (i &lt;= 0) <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(i &gt; 0 &amp;&amp; i &lt;= 2) <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 1; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else return Foo(i -1) + Foo(i - 2); <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } </p>
<p>4.C#中的委托是什么？事件是不是一种委托？<br />答 ： 委托可以把一个方法作为参数代入另一个方法。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;委托可以理解为指向一个函数的引用。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;是，是一种特殊的委托</p>
<p>5.override与重载的区别<br />答 ：&nbsp;override 与重载的区别。重载是方法的名称相同。参数或参数类型不同，进行多次重载以适应不同的需要<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;override 是进行基类中函数的重写。为了适应需要。</p>
<p>6.如果在一个B/S结构的系统中需要传递变量值，但是又不能使用Session、Cookie、Application，您有几种方法进行处理？<br />答 ： <span style="color: red">QueryString、&nbsp;this.Server.Transfer,服务端cach，数据库</span></p>
<p>7.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty？<br />答：<br />foreach (Control control in this.Controls)<br />{<br />if (control is TextBox)<br />{<br />TextBox tb = (TextBox)control ; <br />tb.Text = String.Empty ;<br />}<br />}</p>
<p>8.请编程实现一个冒泡排序算法？<br />答：<br />int [] array = new int [*] ;<br />int temp = 0 ;<br />for (int i = 0 ; i &lt; array.Length - 1 ; i++)<br />{<br />for (int j = i + 1 ; j &lt; array.Length ; j++)<br />{<br />if (array[j] &lt; array[i])<br />{<br />temp = array[i] ;<br />array[i] = array[j] ;<br />array[j] = temp ;<br />}<br />}<br />}</p>
<p>9.描述一下C#中索引器的实现过程，是否只能根据数字进行索引？<br />答：可以用任意类型。</p>
<p>10.求以下表达式的值，写出您想到的一种或几种实现方法： 1-2+3-4+&#8230;&#8230;+m<br />答：</p>
<p>法一：<br /><span style="color: red">int sum=0;<br />bool flag=true;<br />for(int i=1;i&lt;=m;i++)<br />{<br />&nbsp;&nbsp; if(flag)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sum+=i;<br />&nbsp;&nbsp; else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sum-=i;<br />&nbsp;&nbsp; flag=!flag;<br />}<br />return sum;</span></p>
<p><span style="color: red"><span style="background-color: #888888"><span style="color: #000000"><span style="background-color: #ffffff">法二：</span></span></span></span></p>
<p><span style="color: red">if((m%2)&gt;0)<br />&nbsp;&nbsp; return m/2;<br />else<br />&nbsp;&nbsp; return -m/2;</span></p>
<p>12.在下面的例子里<br />using System;<br />class A<br />{<br />public A()<br />{<br />PrintFields();<br />}<br />public virtual void PrintFields(){}<br />}<br />class B:A<br />{<br />int x=1;<br />int y;<br />public B()<br />{<br />y=-1;<br />}<br />public override void PrintFields()<br />{<br />Console.WriteLine("x={0},y={1}",x,y);<br />}<br />当使用new B()创建B的实例时，产生什么输出？<br />答：<span style="color: red">X=1,Y=0</span></p>
<p>13.什么叫应用程序域？<br />答：。Net的运行环境，CLR将程序分成一个或多个逻辑区域就叫应用程序域AppDomain。</p>
<p>14.CTS、CLS、CLR分别作何解释？<br />答：CTS：通用类型系统。CLS：通用语言规范。CLR：公共语言运行库。</p>
<p>15.什么是装箱和拆箱？<br />答：从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。</p>
<p>16.什么是受管制的代码？<br />答：unsafe：非托管代码。不经过CLR运行。</p>
<p>17.什么是强类型系统？<br />答：RTTI：类型识别系统。</p>
<p>18.net中读写数据库需要用到那些类？他们的作用？<br />答：<span style="color: red">SqlConnection/<span style="font-family: Verdana">OleDbConnection</span>:建立数据库的连接；<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SqlCommand/OleDbCommand:执行数据库脚本。</span></p>
<p><br />21.在.net中，配件的意思是？<br />答：程序集。（中间语言，源数据，资源，装配清单）</p>
<p>22.常用的调用WebService的方法有哪些？<br />答：1.使用WSDL.exe命令行工具。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.使用VS.NET中的Add Web Reference菜单选项</p>
<p>23..net Remoting 的工作原理是什么？<br />答：服务器端向客户端发送一个进程编号，一个程序域编号，以确定对象的位置。</p>
<p>&nbsp;</p>
<p>29.根据线程安全的相关知识，分析以下代码，当调用test方法时i&gt;10时是否会引起死锁?并简要说明理由。<br />public void test(int i) <br />{ <br />lock(this) <br />{ <br />if (i&gt;10) <br />{ <br />i--; <br />test(i); <br />} <br />} <br />}<br />答：不会发生死锁，（但有一点int是按值传递的，所以每次改变的都只是一个副本，因此不会出现死锁。但如果把int换做一个object，那么死锁会发生）</p>
<p>30.简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。<br />答：WS主要是可利用HTTP，穿透防火墙。而Remoting可以利用TCP/IP，二进制传送提高效率。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; remoting是.net&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 中用来跨越machine,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; process,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; appdomain&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 进行方法调用的技术,对于三层结构的程序，就可以使用remoting技术来构建．它是分布应用的基础技术.相当于以前的DCOM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Web&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Service是一种构建应用程序的普通模型，并能在所有支持internet网通讯的操作系统上实施。Web&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Service令基于组件的开发和web的结合达到最佳，基于组件的对象模型&nbsp;&nbsp;</p>
<p>31.公司要求开发一个继承System.Windows.Forms.ListView类的组件，要求达到以下的特殊功能：点击ListView各列列头时，能按照点击列的每行值进行重排视图中的所有行 (排序的方式如DataGrid相似)。根据您的知识，请简要谈一下您的思路<br />答：根据点击的列头,包该列的名称取出,按照该列名排序后,再绑定到ListView中。</p>
<p>32.给定以下XML文件，完成算法流程图。<br />&lt;FileSystem&gt; <br />&lt; DriverC &gt; <br />&lt;Dir DirName=&#8221;MSDOS622&#8221;&gt; <br />&lt;File FileName =&#8221; Command.com&#8221; &gt;&lt;/File&gt; <br />&lt;/Dir&gt; <br />&lt;File FileName =&#8221;MSDOS.SYS&#8221; &gt;&lt;/File&gt; <br />&lt;File FileName =&#8221; IO.SYS&#8221; &gt;&lt;/File&gt; <br />&lt;/DriverC&gt; <br />&lt;/FileSystem&gt; <br />请画出遍历所有文件名（FileName）的流程图(请使用递归算法)。<br />答：图就不画了，直接把程序写出来：<br /><span style="color: red">Public void DomDepthFirst(XmlNode currentNode)<br />{<br />&nbsp;&nbsp;&nbsp; XmlNode node=currentNode.FirstChild;<br />&nbsp;&nbsp;&nbsp;&nbsp;while(node!=null)<br />&nbsp;&nbsp;&nbsp; {</span></p>
<p><span style="color: red">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;if(node.Name=="File")<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.Write(((XmlElement)node).GetAttribute("FileName")+"\r\n");<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DomDepthFirst(node);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node=node.NextSibling;<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;}<br /></span>
<p><br />35.能用foreach遍历访问的对象需要实现 ________________接口或声明________________方法的类型。<br />答：IEnumerable 、 GetEnumerator。</p>
<p>36.GC是什么? 为什么要有GC?<br />答：GC是垃圾收集器。程序员不用担心内存管理，因为垃圾收集器会自动进行管理。要请求垃圾收集，可以调用下面的方法之一： <br />System.gc()<br />Runtime.getRuntime().gc()</p>
<p>37.String s = new String("xyz");创建了几个String Object?<br />答：两个对象，一个是&#8220;xyx&#8221;,一个是指向&#8220;xyx&#8221;的引用对像s。</p>
<p>38.abstract class和interface有什么区别?<br />答：<br />声明方法的存在而不去实现它的类被叫做抽像类（abstract class），它用于要创建一个体现某些基本行为的类，并为该类声明方法，但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量，其类型是一个抽像类，并让它指向具体子类的一个实例。不能有抽像构造函数或抽像静态方法。Abstract 类的子类为它们父类中的所有抽像方法提供实现，否则它们也是抽像类为。取而代之，在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。<br />接口（interface）是抽像类的变体。在接口中，所有方法都是抽像的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽像的，没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似，除了该实现类不能从接口定义中继承行为。当类实现特殊接口时，它定义（即将程序体给予）所有这种接口的方法。然后，它可以在实现了该接口的类的任何对像上调用接口的方法。由于有抽像类，它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换，instanceof 运算符可以用来决定某对象的类是否实现了接口。</p>
<p>39.启动一个线程是用run()还是start()?<br />答：启动一个线程是调用start()方法，使线程所代表的虚拟处理机处于可运行状态，这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。</p>
<p>40.接口是否可继承接口? 抽像类是否可实现(implements)接口? 抽像类是否可继承实体类(concrete class)?<br />答：接口可以继承接口。抽像类可以实现(implements)接口，抽像类是否可继承实体类，但前提是实体类必须有明确的构造函数。</p>
<p>41.构造器Constructor是否可被override?<br />答：构造器Constructor不能被继承，因此不能重写Overriding，但可以被重载Overloading。</p>
<p>42.是否可以继承String类?<br />答：String类是final类故不可以继承。</p>
<p>44.两个对像值相同(x.equals(y) == true)，但却可有不同的hash code，这句话对不对?<br />答：不对，有相同的hash code。</p>
<p>45.swtich是否能作用在byte上，是否能作用在long上，是否能作用在String上?<br />答：<span style="color: #ff0000">switch（expr1）中，expr1是一个整型，字符或字符串，因此可以作用在byte和long上，也可以作用在string上。</span></p>
<p>47.当一个线程进入一个对象的一个synchronized方法后，其它线程是否可进入此对象的其它方法?<br />不能，一个对象的一个synchronized方法只能由一个线程访问。</p>
<p>48.abstract的method是否可同时是static,是否可同时是native，是否可同时是synchronized?<br />答：都不能。</p>
<p>49.List, Set, Map是否继承自Collection接口?<br />答：List，Set是Map不是</p>
<p>50.Set里的元素是不能重复的，那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?<br />答：Set里的元素是不能重复的，那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。<br />equals()和==方法决定引用值是否指向同一对像equals()在类中被覆盖，为的是当两个分离的对象的内容和类型相配的话，返回真值。</p>
<p>51.数组有没有length()这个方法? String有没有length()这个方法？<br />答：<span style="color: #ff0000">数组和string都没有Length()方法，只有Length属性。</span></p>
<p>52.sleep() 和 wait() 有什么区别?<br />答：<span style="color: #ff0000">sleep()方法是将当前线程挂起指定的时间。<br />wait()释放对象上的锁并阻塞当前线程，直到它重新获取该锁。</span></p>
<p>53.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?<br />答：short s1 = 1; s1 = s1 + 1;有错，s1是short型，s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。</p>
<p>54.谈谈final, finally, finalize的区别。<br />答：<br />final－修饰符（关键字）如果一个类被声明为final，意味着它不能再派生出新的子类，不能作为父类被继承。因此 一个类不能既被声明为 abstract的，又被声明为final的。将变量或方法声明为final，可以保证它们在使用中 不被改变。被声明为final的变量必须在声明时给定初值，而在以后的引用中只能读取，不可修改。被声明为 final的方法也同样只能使用，不能重载<br />finally－再异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常，那么相匹配的 catch 子句就会 执行，然后控制就会进入 finally 块（如果有的话）。<br />finalize－方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对像从内存中清除出去之前做必要的清理 工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的 ，因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对像之前对这个对象调用的。</p>
<p>55.如何处理几十万条并发数据？<br />答：用存储过程或事务。取得最大标识的时候同时更新..注意主键不是自增量方式这种方法并发的时候是不会有重复主键的..取得最大标识要有一个存储过程来获取.</p>
<p>56.Session有什么重大BUG，微软提出了什么方法加以解决？<br />答：是iis中由于有进程回收机制，系统繁忙的话Session会丢失，可以用Sate server或SQL Server数据库的方式存储Session不过这种方式比较慢，而且无法捕获Session的END事件。</p>
<p>57.进程和线程的区别？<br />答：进程是系统进行资源分配和调度的单位；线程是CPU调度和分派的单位，一个进程可以有多个线程，这些线程共享这个进程的资源。</p>
<p>58.堆和栈的区别？<br />答：<span style="color: #ff0000">栈是编译期间就分配好的内存空间，因此你的代码中必须就栈的大小有明确的定义；堆是程序运行期间动态分配的内存空间，你可以根据程序的运行情况确定要分配的堆内存的大小</span></p>
<p>59.成员变量和成员函数前加static的作用？<br />答：它们被称为常成员变量和常成员函数，又称为类成员变量和类成员函数。分别用来反映类的状态。比如类成员变量可以用来统计类实例的数量，类成员函数负责这种统计的动作。</p>
<p>60.ASP。NET与ASP相比，主要有哪些进步？<br />答：<span style="color: #ff0000">asp解释形，aspx编译型，性能提高，可以跟美工的工作分开进行，更有利于团队开发。</span></p>
<p>61.产生一个int数组，长度为100，并向其中随机插入1-100，并且不能重复。<br />int[] intArr=new int[100];<br />ArrayList myList=new ArrayList();<br />Random rnd=new Random();<br />while(myList.Count&lt;100)<br />{<br />int num=rnd.Next(1,101);<br />if(!myList.Contains(num))<br />myList.Add(num);<br />}<br />for(int i=0;i&lt;100;i++)<br />intArr[i]=(int)myList[i];</p>
<p>62.请说明在.net中常用的几种页面间传递参数的方法，并说出他们的优缺点。<br />答：session(viewstate) 简单，但易丢失<br />application 全局<br />cookie 简单，但可能不支持，可能被伪造<br />url参数 简单，显示于地址栏，长度有限<br />数据库 稳定，安全，但性能相对弱</p>
<p>63.请指出GAC的含义？<br />答：全局程序集缓存。</p>
<p>64.向服务器发送请求有几种方式？<br />答：get,post。get一般为链接方式，post一般为按钮方式。</p>
<p>65.DataReader与Dataset有什么区别？<br />答：一个是只能向前的只读游标，一个是内存中的表。</p>
<p>66.软件开发过程一般有几个阶段？每个阶段的作用？<br />答：需求分析，架构设计，代码编写，QA，部署</p>
<p>67.在c#中using和new这两个关键字有什么意义，请写出你所知道的意义？using 指令 和语句 new 创建实例 new 隐藏基类中方法。<br />答：using 引入名称空间或者使用非托管资源<br />new 新建实例或者隐藏父类方法</p>
<p>68.需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话,仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个.<br />答：<span style="color: red">string inputStr=" xx xx ";<br /><span style="font-family: Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inputStr = Regex.Replace(inputStr.Trim(), @"\s+", " ");</span></span></p>
<p>69.下面这段代码输出什么？为什么？<br />int i=5;<br />int j=5;<br />if (Object.ReferenceEquals(i,j))<br />Console.WriteLine("Equal");<br />else<br />Console.WriteLine("Not Equal");<br />答：不相等，因为比较的是对像</p>
<p>70.什么叫做SQL注入，如何防止？请举例说明。<br />答：<span style="color: #ff0000">利用sql语言漏洞获得合法身份登陆系统。如身份验证的程序设计成：<br />SqlCommand com=new SqlCommand("Select * from users where username='"+t_name.text+"' and pwd='"+t_pwd.text+"'");<br />object obj=com.ExcuteScale();<br />if(obj!=null)<br />&nbsp; {<br />&nbsp;&nbsp;&nbsp; //通过验证<br />&nbsp; }<br />这段代码容易被sql注入。如用户在t_name中随便输入，在t_pwd中输入1'&nbsp;or 1='1&nbsp; 就可以进入系统了。</span></p>
<p>71.什么是反射？<br />答：动态获取程序集信息</p>
<p>72.用Singleton如何写设计模式<br />答：static属性里面new ,构造函数private</p>
<p>73.什么是Application Pool？<br />答：Web应用，类似Thread Pool，提高并发性能。</p>
<p>74.什么是虚函数？什么是抽像函数？<br />答：虚函数：可由子类继承并重写的函数。抽像函数：规定其非虚子类必须实现的函数，必须被重写。</p>
<p>75.什么是XML？<br />答：XML即可扩展标记语言。eXtensible Markup Language.标记是指计算机所能理解的信息符号，通过此种标记，计算机之间可以处理包含各种信息的文章等。如何定义这些标记，即可以选择国际通用的标记语言，比如HTML，也可以使用象XML这样由相关人士自由决定的标记语言，这就是语言的可扩展性。XML是从SGML中简化修改出来的。它主要用到的有XML、XSL和XPath等。</p>
<p>77.什么是ASP.net中的用户控件？<br />答：用户控件一般用在内容多为静态,或者少许会改变的情况下..用的比较大..类似ASP中的include..但是功能要强大的多。</p>
<p>78.列举一下你所了解的XML技术及其应用<br />答：xml用于配置,用于保存静态数据类型.接触XML最多的是web Services..和config,soap协议</p>
<p>79.ADO.net中常用的对象有哪些？分别描述一下。<br />答：Connection 数据库连接对像<br />Command 数据库命令<br />DataReader 数据读取器<br />DataSet 数据集</p>
<p>80.什么是code-Behind技术。<br />答：ASPX,RESX和CS三个后缀的文件，这个就是代码分离.实现了HTML代码和服务器代码分离.方便代码编写和整理.</p>
<p>81.什么是SOAP,有哪些应用。<br />答:SOAP（Simple Object Access Protocol ）简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议，是一个基于XML的协议。使用SOAP，不用考虑任何特定的传输协议（最常用的还是HTTP协议），可以允许任何类型的对象或代码，在任何平台上，以任何一直语言相互通信。这种相互通信采用的是XML格式的消息。 </p>
<p>SOAP也被称作XMLP，为两个程序交换信息提供了一种标准的工作机制。在各类机构之间通过电子方式相互协作的情况下完全有必要为此制定相应的标准。 </p>
<p>SOAP描述了把消息捆绑为XML的工作方式。它还说明了发送消息的发送方、消息的内容和地址以及发送消息的时间。SOAP是Web Service的基本通信协议。SOAP规范还定义了怎样用XML来描述程序数据（Program Data）,怎样执行RPC（Remote Procedure Call）。大多数SOAP解决方案都支持RPC-style应用程序。SOAP还支持 Document-style应用程序（SOAP消息只包含XML文本信息）。 </p>
<p>最后SOAP规范还定义了HTTP消息是怎样传输SOAP消息的。MSMQ、SMTP、TCP/IP都可以做SOAP的传输协议。&nbsp;&nbsp;</p>
<p>SOAP 是一种轻量级协议，用于在分散型、分布式环境中交换结构化信息。 SOAP 利用 XML 技术定义一种可扩展的消息处理框架，它提供了一种可通过多种底层协议进行交换的消息结构。 这种框架的设计思想是要独立于任何一种特定的编程模型和其他特定实现的语义。 </p>
<p>SOAP 定义了一种方法以便将 XML 消息从 A 点传送到 B 点。 为此，它提供了一种基于 XML 且具有以下特性的消息处理框架： 1) 可扩展， 2) 可通过多种底层网络协议使用， 3) 独立于编程模型。 </p>
<p>82.C#中 property 与 attribute的区别，他们各有什么用处，这种机制的好处在哪里？<br />答：一个是属性，用于存取类的字段，一个是特性，用来标识类，方法等的附加性质</p>
<p>83.XML 与 HTML 的主要区别<br />答：1. XML是区分大小写字母的，HTML不区分。 <br />2. 在HTML中，如果上下文清楚地显示出段落或者列表键在何处结尾，那么你可以省略&lt;/p&gt;或者&lt;/li&gt;之类的结束 标记。在XML中，绝对不能省略掉结束标记。 <br />3. 在XML中，拥有单个标记而没有匹配的结束标记的元素必须用一个 / 字符作为结尾。这样分析器就知道不用 查找结束标记了。 <br />4. 在XML中，属性值必须分装在引号中。在HTML中，引号是可用可不用的。 <br />5. 在HTML中，可以拥有不带值的属性名。在XML中，所有的属性都必须带有相应的值。</p>
<p>84.c#中的三元运算符是？<br />答：？：。</p>
<p>85.当整数a赋值给一个object对像时，整数a将会被？<br />答：装箱。</p>
<p>86.类成员有_____种可访问形式？<br />答：this.;new Class().Method;</p>
<p>87.public static const int A=1;这段代码有错误么？是什么？<br />答：const不能用static修饰。</p>
<p>88.float f=-123.567F; int i=(int)f;i的值现在是_____? <br />答：-123。</p>
<p>89.委托声明的关键字是______?<br />答：delegate.</p>
<p>&nbsp;</p>
<p>91.在Asp.net中所有的自定义用户控件都必须继承自________?<br />答：Control。</p>
<p>92.在.Net中所有可序列化的类都被标记为_____? <br />答：[serializable]</p>
<p>93.在.Net托管代码中我们不用担心内存漏洞，这是因为有了______?<br />答：GC。</p>
<p>94.下面的代码中有什么错误吗？_______<br />using System;<br />class A<br />{<br />public virtual void F(){<br />Console.WriteLine("A.F");<br />}<br />}<br />abstract class B:A<br />{<br />public abstract override void F(); 答：abstract override 是不可以一起修饰. <br />} // new public abstract void F(); </p>
<p>95.当类T只声明了私有实例构造函数时，则在T的程序文本外部，___可以___（可以 or 不可以）从T派生出新的类，不可以____（可以 or 不可以）直接创建T的任何实例。<br />答：不可以，不可以。</p>
<p>96.下面这段代码有错误么？<br />switch (i){<br />case(): 答：//case()条件不能为空<br />CaseZero();<br />break;<br />case 1:<br />CaseOne();<br />break;<br />case 2:<br />dufault; 答：//wrong，格式不正确<br />CaseTwo();<br />break;<br />}</p>
<p>97.在.Net中，类System.Web.UI.Page 可以被继承么？<br />答：可以。</p>
<p>98..net的错误处理机制是什么？<br />答：.net错误处理机制采用try-&gt;catch-&gt;finally结构，发生错误时，层层上抛，直到找到匹配的Catch为止。</p>
<p>99.利用operator声明且仅声明了==，有什么错误么?<br />答：要同时修改Equale和GetHash() ? 重载了"==" 就必须重载 "!="</p>
<p>&nbsp;</p>
<p>104.某一密码仅使用K、L、M、N、O共5个字母，密码中的单词从左向右排列，密码单词必须遵循如下规则：<br />（1） 密码单词的最小长度是两个字母，可以相同，也可以不同<br />（2） K不可能是单词的第一个字母<br />（3） 如果L出现，则出现次数不止一次<br />（4） M不能使最后一个也不能是倒数第二个字母<br />（5） K出现，则N就一定出现<br />（6） O如果是最后一个字母，则L一定出现<br />问题一：下列哪一个字母可以放在LO中的O后面，形成一个3个字母的密码单词？<br />A) K B)L C) M D) N<br />答案:B</p>
<p>问题二：如果能得到的字母是K、L、M，那么能够形成的两个字母长的密码单词的总数是多少？<br />A)1个 B)3个 C)6个 D）9个<br />答案:A</p>
<p>问题三：下列哪一个是单词密码？<br />A) KLLN B) LOML C) MLLO D)NMKO<br />答案:C</p>
<p>8. 62-63=1 等式不成立，请移动一个数字（不可以移动减号和等于号），使得等式成立，如何移动？<br />答案:62移动成2的6次方</p>
<p>105.对于这样的一个枚举类型：<br />enum Color:byte<br />{<br />Red,<br />Green,<br />Blue,<br />Orange<br />}<br />答：string[] ss=Enum.GetNames(typeof(Color));<br />byte[] bb=Enum.GetValues(typeof(Color));</p>
<p>106. C#中 property 与 attribute的区别，他们各有什么用处，这种机制的好处在哪里？<br />答：attribute:自定义属性的基类;property :类中的属性</p>
<p>107.C#可否对内存进行直接的操作？<br />答：在.net下，.net引用了垃圾回收（GC）功能，它替代了程序员 不过在C#中，不能直接实现Finalize方法，而是在析构函数中调用基类的Finalize()方法</p>
<p>108.ADO。NET相对于ADO等主要有什么改进？<br />答：1:ado.net不依赖于ole db提供程序,而是使用.net托管提供的程序,2:不使用com3:不在支持动态游标和服务器端游 4:,可以断开connection而保留当前数据集可用 5:强类型转换 6:xml支持</p>
<p>109.写一个HTML页面，实现以下功能，左键点击页面时显示&#8220;您好&#8221;，右键点击时显示&#8220;禁止右键&#8221;。并在2分钟后自动关闭页面。<br />答：&lt;script ***script&gt;<br />setTimeout('window.close();',3000);<br />function show()<br />{<br />if (window.event.button == 1)<br />{<br />alert("左");<br />}<br />else if (window.event.button == 2)<br />{<br />alert("右");<br />}<br />}<br />&lt;/script&gt;</p>
<p>110.大概描述一下ASP。NET服务器控件的生命周期<br />答：初始化 加载视图状态 处理回发数据 加载 发送回发更改通知 处理回发事件 预呈现 保存状态 呈现 处置 卸载</p>
<p>111.Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类，是否可以implements(实现)interface(接口)?<br />答：不能，可以实现接口</p>
<p>112.Static Nested Class 和 Inner Class的不同，说得越多越好<br />答：Static Nested Class是被声明为静态（static）的内部类，它可以不依赖于外部类实例被实例化。而通常的内部类需要在外部类实例化后才能实例化。</p>
<p>113.，&amp;和&amp;&amp;的区别。<br />&amp;是位运算符，表示按位与运算，&amp;&amp;是逻辑运算符，表示逻辑与（and）.</p>
<p>114.HashMap和Hashtable的区别。<br />答：HashMap是Hashtable的轻量级实现（非线程安全的实现），他们都完成了Map接口，主要区别在于HashMap允许空（null）键值（key）,由于非线程安全，效率上可能高于Hashtable.</p>
<p>115.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?<br />答：short s1 = 1; s1 = s1 + 1; （s1+1运算结果是int型，需要强制转换类型）<br />short s1 = 1; s1 += 1;（可以正确编译）</p>
<p>116.Overloaded的方法是否可以改变返回值的类型?<br />答：Overloaded的方法是可以改变返回值的类型。</p>
<p>117.error和exception有什么区别?<br />答：error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。<br />exception 表示一种设计或实现问题。也就是说，它表示如果程序运行正常，从不会发生的情况。</p>
<p>118.&lt;%# %&gt; 和 &lt;% %&gt; 有什么区别？<br />答：&lt;%# %&gt;表示绑定的数据源<br />&lt;% %&gt;是服务器端代码块</p>
<p>119.你觉得ASP.NET 2.0（VS2005）和你以前使用的开发工具（.Net 1.0或其他）有什么最大的区别？你在以前的平台上使用的哪些开发思想（pattern / architecture）可以移植到ASP.NET 2.0上 (或者已经内嵌在ASP.NET 2.0中)<br />答：1 ASP.NET 2.0 把一些代码进行了封装打包,所以相比1.0相同功能减少了很多代码.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 同时支持代码分离和页面嵌入服务器端代码两种模式,以前1.0版本,.NET提示帮助只有在分离的代码文件,无 法 在页面嵌入服务器端代码获得帮助提示,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 代码和设计界面切换的时候,2.0支持光标定位.这个我比较喜欢<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 在绑定数据,做表的分页.UPDATE,DELETE,等操作都可以可视化操作,方便了初学者<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5 在ASP.NET中增加了40多个新的控件,减少了工作量</p>
<p>120.重载与覆盖的区别？<br />答：1、方法的覆盖是子类和父类之间的关系，是垂直关系；方法的重载是同一个类中方法之间的关系，是水平关系<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2、覆盖只能由一个方法，或只能由一对方法产生关系；方法的重载是多个方法之间的关系。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3、覆盖要求参数列表相同；重载要求参数列表不同。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4、覆盖关系中，调用那个方法体，是根据对象的类型（对像对应存储空间类型）来决定；重载关系，是根据调 用时的实参表与形参表来选择方法体的。</p>
<p>121.描述一下C#中索引器的实现过程，是否只能根据数字进行索引？ <br />答：不是。可以用任意类型。</p>
<p><br />125.分析以下代码。<br />public static void test(string ConnectString) </p>
<p>{ </p>
<p>System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(); <br />conn.ConnectionString = ConnectString; <br />try </p>
<p>{ <br />conn.Open(); <br />&#8230;&#8230;. <br />}<br />catch(Exception Ex) <br />{ <br />MessageBox.Show(Ex.ToString()); <br />}<br />finally <br />{ </p>
<p>if (!conn.State.Equals(ConnectionState.Closed)) <br />conn.Close(); <br />} <br />}<br />请问 </p>
<p>1)以上代码可以正确使用连接池吗？ </p>
<p>答：回答：如果传入的connectionString是一模一样的话，可以正确使用连接池。不过一模一样的意思是，连字符的空格数，顺序完全一致。 </p>
<p>126.公司要求开发一个继承System.Windows.Forms.ListView类的组件，要求达到以下的特殊功能：点击ListView各列列头时，能按照点击列的每行值进行重排视图中的所有行 (排序的方式如DataGrid相似)。根据您的知识，请简要谈一下您的思路：<br />答：根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中</p>
<p>127.什么是WSE？目前最新的版本是多少？<br />答：WSE (Web Service Extension) 包来提供最新的WEB服务安全保证，目前最新版本2.0。</p>
<p>128.在下面的例子里<br />using System;<br />class A<br />{<br />public A(){<br />PrintFields();<br />}<br />public virtual void PrintFields(){}<br />}<br />class B:A<br />{<br />int x=1;<br />int y;<br />public B(){<br />y=-1;<br />}<br />public override void PrintFields(){<br />Console.WriteLine("x={0},y={1}",x,y);<br />}<br />当使用new B()创建B的实例时，产生什么输出？<br />答：X=1,Y=0</p>
<p>129.下面的例子中</p>
<p>using System;<br />class A<br />{<br />public static int X;<br />static A(){<br />X=B.Y+1;<br />}<br />}<br />class B<br />{<br />public static int Y=A.X+1;<br />static B(){}<br />static void Main(){<br />Console.WriteLine("X={0},Y={1}",A.X,B.Y);<br />}<br />}<br />产生的输出结果是什么？<br />答：x=1,y=2</p>
<p>130.abstract class和interface有什么区别?<br />答：声明方法的存在而不去实现它的类被叫做抽像类（abstract class），它用于要创建一个体现某些基本行为的类，并为该类声明方法，但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量，其类型是一个抽像类，并让它指向具体子类的一个实例。不能有抽像构造函数或抽像静态方法。Abstract 类的子类为它们父类中的所有抽像方法提供实现，否则它们也是抽像类为。取而代之，在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。<br />接口（interface）是抽像类的变体。在接口中，所有方法都是抽像的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽像的，没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似，除了该实现类不能从接口定义中继承行为。当类实现特殊接口时，它定义（即将程序体给予）所有这种接口的方法。然后，它可以在实现了该接口的类的任何对像上调用接口的方法。由于有抽像类，它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换，instanceof 运算符可以用来决定某对象的类是否实现了接口。</p>  <img src ="http://www.cnitblog.com/yide/aggbug/79417.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2012-04-30 09:11 <a href="http://www.cnitblog.com/yide/archive/2012/04/30/79417.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL中返回刚插入记录的自增ID </title><link>http://www.cnitblog.com/yide/archive/2012/04/25/79282.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Wed, 25 Apr 2012 12:16:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2012/04/25/79282.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/79282.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2012/04/25/79282.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/79282.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/79282.html</trackback:ping><description><![CDATA[<p><font color="#000000" size="3" face="Times New Roman">SQL中返回刚插入记录的自增ID @@IDENTITY<br /></font></p>
<p><font color="#000000" size="3" face="Times New Roman"><br />一、要获取此ID,最简单的方法就是:(以下举一简单实用的例子) </font></p>
<p><font color="#000000" size="3" face="Times New Roman">-创建数据库和表</font></p>
<p><font color="#000000" size="3" face="Times New Roman">1.create database MyDataBase <br />2.use MyDataBase <br />3.create table mytable ( id int identity(1,1), name varchar(20) ) <br />create database MyDataBase<br />use MyDataBase<br />create table mytable ( id int identity(1,1), name varchar(20) )<br />&nbsp;</font></p>
<p><font color="#000000" size="3" face="Times New Roman">--执行这个SQL,就能查出来刚插入记录对应的自增列的值</font></p>
<p><font color="#000000" size="3" face="Times New Roman">1.insert into mytable values('李四') <br />2.select @@identity <br />insert into mytable values('李四')<br />select @@identity<br />二、三种方式的比较</font></p>
<p><font color="#000000" size="3" face="Times New Roman">SQL Server 2000中，有三个比较类似的功能：他们分别是：SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY，它们都返回插入到 IDENTITY 列中的值。</font></p>
<p><font color="#000000" size="3" face="Times New Roman">IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。IDENT_CURRENT 不受作用域和会话的限制，而受限于指定的表。IDENT_CURRENT 返回为任何会话和作用域中的特定表所生成的值。 @@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。 SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值</font></p>
<p><font color="#000000" size="3" face="Times New Roman">SCOPE_IDENTITY 和 @@IDENTITY 返回在当前会话中的任何表内所生成的最后一个标识值。但是，SCOPE_IDENTITY 只返回插入到当前作用域中的值；@@IDENTITY 不受限于特定的作用域。</font></p>
<p><font color="#000000" size="3" face="Times New Roman">例如，有两个表 T1 和 T2，在 T1 上定义了一个 INSERT 触发器。当将某行插入 T1 时，触发器被激发，并在 T2 中插入一行。此例说明了两个作用域：一个是在 T1 上的插入，另一个是作为触发器的结果在 T2 上的插入。</font></p>
<p><font color="#000000" size="3" face="Times New Roman">假设 T1 和 T2 都有 IDENTITY 列，@@IDENTITY 和 SCOPE_IDENTITY 将在 T1 上的 INSERT 语句的最后返回不同的值。</font></p>
<p><font color="#000000" size="3" face="Times New Roman">@@IDENTITY 返回插入到当前会话中任何作用域内的最后一个 IDENTITY 列值，该值是插入 T2 中的值。</font></p>
<p><font color="#000000" size="3" face="Times New Roman">SCOPE_IDENTITY() 返回插入 T1 中的 IDENTITY 值，该值是发生在相同作用域中的最后一个 INSERT。如果在作用域中发生插入语句到标识列之前唤醒调用 SCOPE_IDENTITY() 函数，则该函数将返回 NULL 值。</font></p>
<p><font color="#000000" size="3" face="Times New Roman">而IDENT_CURRENT('T1') 和 IDENT_CURRENT('T2') 返回的值分别是这两个表最后自增的值。</font></p>
<p><font color="#000000" size="3" face="Times New Roman">ajqc的实验:(40条本地线程,40+40条远程线程同时并发测试,插入1200W行),得出的结论是: 1.在典型的级联应用中.不能用@@IDENTITY,在CII850,256M SD的机器上1W多行时就会并发冲突.在P42.8C,512M DDR上,才6000多行时就并发冲突. 2.SCOPE_IDENTITY()是绝对可靠的,可以用在存储过程中,连触发器也不用建,没并发冲突</font></p>
<p><font color="#000000" size="3" face="Times New Roman">SELECT IDENT_CURRENT('TableName') --返回指定表中生成的最后一个标示值</font></p>
<p><font color="#000000" size="3" face="Times New Roman">SELECT IDENT_INCR('TableName')--返回指定表的标示字段增量值</font></p>
<p><font color="#000000" size="3" face="Times New Roman">SELECT IDENT_SEED('TableName')--返回指定表的标示字段种子值</font></p>
<p><font color="#000000" size="3" face="Times New Roman">返回最后插入记录的自动编号 SELECT IDENT_CURRENT('TableName') 返回下一个自动编号:</font></p>
<p><font color="#000000" size="3" face="Times New Roman">SELECT IDENT_CURRENT('TableName') + (SELECT IDENT_INCR('TableName'))<br />SELECT @@IDENTITY --返回当前会话所有表中生成的最后一个标示值</font></p><img src ="http://www.cnitblog.com/yide/aggbug/79282.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2012-04-25 20:16 <a href="http://www.cnitblog.com/yide/archive/2012/04/25/79282.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>当前上下文中不存在名称“ConfigurationManager”</title><link>http://www.cnitblog.com/yide/archive/2012/04/24/79256.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Tue, 24 Apr 2012 12:31:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2012/04/24/79256.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/79256.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2012/04/24/79256.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/79256.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/79256.html</trackback:ping><description><![CDATA[<p><br />连库时出现此问题：<br />当前上下文中不存在名称&#8220;ConfigurationManager&#8221;</p>
<p>先在&#8220;解决方案中--在自建类库--右键菜单&#8221;----&#8220;引用&#8221;中引用System.Configuration.dll，然后在页面上using&nbsp; </p>
<p>&nbsp;</p>
<p>&nbsp;</p><img src ="http://www.cnitblog.com/yide/aggbug/79256.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2012-04-24 20:31 <a href="http://www.cnitblog.com/yide/archive/2012/04/24/79256.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c#--三层架构-步骤</title><link>http://www.cnitblog.com/yide/archive/2012/04/23/79215.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Mon, 23 Apr 2012 09:41:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2012/04/23/79215.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/79215.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2012/04/23/79215.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/79215.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/79215.html</trackback:ping><description><![CDATA[<p style="margin-bottom: 1em; padding-top: 0px; padding-bottom: 0px; color: #6d6d6d; line-height: 26px; font-family: arial; ">一个简单的三层架构步骤</p><p style="margin-bottom: 1em; padding-top: 0px; padding-bottom: 0px; color: #6d6d6d; line-height: 26px; font-family: arial; ">1、新建一个空白项目，命名为mvc</p><p style="margin-bottom: 1em; padding-top: 0px; padding-bottom: 0px; color: #6d6d6d; line-height: 26px; font-family: arial; ">2、<span style="color: #0000ff; ">在解决方案上新建&#8220;</span><strong style="color: #0000ff; ">解决方案文件夹</strong><span style="color: #0000ff; ">&#8221;</span>------分别为Model,Data,BLL</p><p style="margin-bottom: 1em; padding-top: 0px; padding-bottom: 0px; color: #6d6d6d; line-height: 26px; font-family: arial; ">3、在以上解决方案文件夹上单击右键分别新建类库，在类库下新建需要的类</p><p style="margin-bottom: 1em; padding-top: 0px; padding-bottom: 0px; color: #6d6d6d; line-height: 26px; font-family: arial; ">4、在解决方案上新建一个网站web</p><p style="margin-bottom: 1em; padding-top: 0px; padding-bottom: 0px; color: #6d6d6d; line-height: 26px; font-family: arial; ">注：一般是Data引用Model层，而BLL上引用Model 和Data，而Model无引用，web上引用Model 、Data、BLL，总共新建了四个项目分别是Model,Data,BLL，web</p><img src ="http://www.cnitblog.com/yide/aggbug/79215.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2012-04-23 17:41 <a href="http://www.cnitblog.com/yide/archive/2012/04/23/79215.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c#--gridview</title><link>http://www.cnitblog.com/yide/archive/2012/04/20/79111.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Fri, 20 Apr 2012 03:49:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2012/04/20/79111.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/79111.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2012/04/20/79111.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/79111.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/79111.html</trackback:ping><description><![CDATA[<h2>GridView的用法</h2><p style="word-wrap: break-word; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; font-family: 'ms shell dlg'; font-size: 14px; line-height: 28px; "></p><p style="word-wrap: break-word; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; font-family: 'ms shell dlg'; font-size: 14px; line-height: 28px; "></p><div id="sina_keyword_ad_area2" style="word-wrap: break-word; font-family: 'ms shell dlg'; font-size: 14px; line-height: 28px; "><p style="word-wrap: break-word; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; "><strong>一、常规列属性</strong><br style="clear: both; " />1.BoundField<br style="clear: both; " />此类型的列是将数据表中的字段内容用文本的方式显示出来。</p><p style="word-wrap: break-word; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; ">2.CheckBoxField（不常用）<br style="clear: both; " />常用来显示数据库中的布尔类型字段的值</p><p style="word-wrap: break-word; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; ">3.HyperLinkField<br style="clear: both; " />显示一个链接，此类型字段常用，其主要属性是：<br style="clear: both; " />DataNavigateUrlFields、DataNavigateUrlFormatStr<wbr>ing、DataTextField、DataTextFormatString<br style="clear: both; " />如：要在此列中形成一个链接，链接的文字是&#8220;公司名称&#8221;，链接到查看公司详细信息的页面：ViewCompany.aspx，并且页面后要跟一个参数ID=xxxx。第一条记录ID=ALFKI，CompanyName=Alfreds Futterkiste，其生成的链接应该是ViewCompany.aspx?ID=ALFKI，其链接文本为&#8220;Alfreds Futterkiste&#8221;，以上四个属性定义的值如下：<br style="clear: both; " />DataNavigateUrlFields 的值为 "CustomerID"<br style="clear: both; " />DataNavigateUrlFormatStr<wbr>ing 的值为 "ViewCompany.aspx?id={0}"，在生成时，{0}就会用DataNavigateUrlFields属性所定义的字段的值进行替换。<br style="clear: both; " />DataTextField的值为"CompanyName"<br style="clear: both; " />DataTextFormatString的值为"{0}"，也就是只显示其公司的名称，无其它多余文字。显示效果如下图所示：</p><p style="word-wrap: break-word; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; ">4.ImageField（不常用）<br style="clear: both; " />用于显示存储图片的二进制类型字段的数据，直接将二进制字段存储的图片数据显示为图片，但此字段在VS2005之后去掉了DataField属性，加入了 DataImageUrlField字段，其意思是不再支持直接显示二进制内容为图片，而是需要自己再写一个显示页面，在这个页面去读取二进制字段内容， 并将其输出为图片内容。此字段不常用。</p><p style="word-wrap: break-word; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; ">5.ButtonField<br style="clear: both; " />此列显示为&#8220;按钮&#8221;，注意：按钮并不只是HTML语言中的&lt;input type="button"...&gt;这一种类型，在asp.net中，能够完成将表单（页面）提交（PostBack）到服务器动作的控件都可以称 之为&#8220;按钮&#8221;，因此，此类型的字段有一个属性：ButtonType有三个选项，Link、Image、Button，表示了&#8220;按钮&#8221;的三种表现形式，分 别对应着&#8220;工具箱&#8221;中的LinkButton、ImageButton、Button三种控件。<br style="clear: both; " />当按钮被Click之后，会触发GridView的&#8220;RowCommand&#8221;事件，按钮被点击后执行什么样的程序，要在RowCommand事件中去写。<br style="clear: both; " />有这样一个问题：如果一个GridView中有多个Button列，但只有一个RowCommand事件，那么如何知道当前是哪一列的Button被Click了呢？这就需要通过ButtonField列的CommandName属性来指定。<br style="clear: both; " />如：有两个ButtonField列，将第一列的CommandName属性设置为&#8220;这是第一列&#8221;，将第二列的CommandName属性设置为&#8220;这是第二列&#8221;。<br style="clear: both; " />选中GridView控件，在&#8220;属性面板&#8221;的&#8220;事件&#8221;页中双击RowCommand事件后的空格。</p><p style="word-wrap: break-word; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; ">再在aspx.cs文件中的GridView的RowCommand事件中程序如下书写：<br style="clear: both; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs<wbr>&nbsp;e)<br style="clear: both; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;{<br style="clear: both; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;switch (e.CommandName)<br style="clear: both; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;{<br style="clear: both; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;case "这是第一列":<br style="clear: both; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;//此处请写被点击后需要处理的事务<br style="clear: both; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;Response.Write("第一列被点击");<br style="clear: both; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;break;<br style="clear: both; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;case "这是第二列":<br style="clear: both; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;//此处请写被点击后需要处理的事务<br style="clear: both; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;Response.Write("第二列被点击");<br style="clear: both; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;break;<br style="clear: both; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;}<br style="clear: both; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;}</p><p style="word-wrap: break-word; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; ">6.CommandField<br style="clear: both; " />此列的实质与ButtonField列没有任何区别，唯有的区别就是不需要再设置CommandName属性，而是每一种按钮对应了GridView的一 种事件，而不是RowCommand事件，如：编辑按钮对应着RowEditing事件，删除按钮对应着RowDeleting（删除之时）和 RowDeleted（删除之后）两个事件，以此类推，这里就不一一列举。也不再举例。</p><p style="word-wrap: break-word; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; "><strong>二、模板列<br style="clear: both; " /></strong>前面几个类型的列，把它们统称为&#8220;常规列&#8221;，模板列（Template）与之前的几个列的区别在 于：之前的列都相当于一个单个的控件，而此列相当于一个容器，在容器中又可以拖入多个控件，构成更复杂的单元格内容。GridView之所以灵活就灵活在 这个模板列。在列定义的对话框中加入一个模板列，只设置HeadText和ItemStyle.Width等属性，再点击确定关闭对话框。在aspx页面 中选中GridView控件并点击右向箭头，如下图所示：</p><p style="word-wrap: break-word; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; "><br style="clear: both; " />点击&#8220;编辑模板&#8221;进入下面界面：</p><p style="word-wrap: break-word; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; ">可以看到，右方的下拉列表中列出了模板列的名称，如果有多个模板列，则会列出多个模板列的名称，每个模板下有多个Template，我们一般只需要编辑ItemTemplate，其它的Template大家可以根据其名称推测其作用。<br style="clear: both; " />ItemTemplate就是&#8220;容器&#8221;，可以将&#8220;工具箱&#8221;中的控件拖入其中。上图中就拖入一个Image控件，一个Button控件和一个CheckBox控件。<br style="clear: both; " />选中这些控件，并在属性面板中将其ID改为有意义的名称。其具体的用法在后面再讲。<br style="clear: both; " />模板列编辑结束后，点击右向箭头选择&#8220;结束模板编辑&#8221;。</p><p style="word-wrap: break-word; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; "><strong>三、RowDataBound事件</strong><br style="clear: both; " />上面只是定义了模板列，如果要其显示出每条记录的相应信息，还需要将模板列中的控件属性赋值，这个动作一般放在GridView的 RowDataBound事件中去完成。双击属性面板的动作页，定义一个RowDataBound事件。假定刚才定义的三个控件其ID分别 为：imgTemp,btnTemp,cbTemp，则aspx.cs文件示范程序如下：<br style="clear: both; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)<br style="clear: both; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;{<br style="clear: both; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;if(e.Row.RowIndex &lt; 0) //如果正在生成表头<br style="clear: both; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;return;<br style="clear: both; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;DataRowView drv = (DataRowView)e.Row.DataItem;&nbsp;<wbr>&nbsp;<wbr>&nbsp;//将绑定当前行的数据行视图取出</p><p style="word-wrap: break-word; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; ">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;Image img = (Image)e.Row.FindControl("imgTemp");<br style="clear: both; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;img.ImageUrl = drv["ImageUrl"].ToString();&nbsp;<wbr>&nbsp;<wbr>&nbsp;//假定数据表中有一个ImageUrl的字段</p><p style="word-wrap: break-word; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; ">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;Button btn = (Button)e.Row.FindControl("btnTemp");<br style="clear: both; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;btn.Text = drv["CompanyName"].ToString();</p><p style="word-wrap: break-word; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; ">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;CheckBox cb = (CheckBox)e.Row.FindControl("cbTemp");<br style="clear: both; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;cb.Checked = (drv["IsSelect"].ToString() == "1" ? true : false);&nbsp;<wbr>&nbsp;<wbr>&nbsp;//假定数据表中有一个IsSelect字段，1表示选中，0表示未选中。<br style="clear: both; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;}</p><p style="word-wrap: break-word; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; ">上面这段程序是一个示范，并不是完全按照示范表Customer表中的字段进行设置。其过程为：<br style="clear: both; " />1.将e.Row.DataItem强制转换为DataRowView对象，这个对象就是绑定到此行的数据表DataTable中的一条DataRow的视图，其用法与DataRow类似。<br style="clear: both; " />2.通过e.Row.FindControl方法找到指定ID的那个模板中的控件<br style="clear: both; " />3.通过一定的计算，将DataRowView中的值转换为控件的属性。</p><p style="word-wrap: break-word; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; ">不仅模板列可以在RowDataBound事件中进行操作，常规列也可以，但不是用FindControl方法，以下例为示范，要获取第2列公司名称这个 HyperLinkField类型的常规列中的HyperLink对象，在RowDataBound事件中写下面这行程序：</p><p style="word-wrap: break-word; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; ">HyperLink hl = (HyperLink)e.Row.Cells[1].Controls[0];</p><p style="word-wrap: break-word; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; ">因为此列位于该表的第二列，因此Cells[1]表示该单元格，此单元格中只有一个控件，因此为Controls[0]。<br style="clear: both; " />再如：在删除动作列中的删除按钮上加一个JavaScript动作，每次点击删除按钮时，先在页面通过JavaScript弹出一个确认对话框，可以按如下步骤操作：<br style="clear: both; " />1.在列编辑对话框中添加一个&#8220;删除&#8221;按钮列，按钮类型为Button，假定是在表格的第4列<br style="clear: both; " />2.在RowDataBound中如此写：</p><p style="word-wrap: break-word; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; ">Button btDel = (Button)e.Row.Cells[3].Controls[0];<br style="clear: both; " />bt.Attributes.Add("OnClick", "return confirm('您是否确认删除此条记录？')");</p><p style="word-wrap: break-word; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; ">在浏览器中查看此表格的HTML源码时，就会发现每一个删除按钮都有如此一段HTML属性：<br style="clear: both; " />OnClick="return confirm('您是否确认删除此条记录？')"<br style="clear: both; " />return confirm('.....')是一句JavaScript语句，根据用户在弹出的对话框中选择的项来决定返回的值，如果选择&#8220;是&#8221;，则返回true，则此按钮所触发的提交表单继续进行；反之，返回false，则此按钮所触发的提交表单事情停止，删除动作就不会完成。</p><p style="word-wrap: break-word; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; "><strong>四DataKeys属性</strong><br style="clear: both; " />GridView有一个DataKeys属性会经常用到，这里单独讲一下。比如：有一个删除按钮列，点击删除后，要删除当前行，但是你怎么从后台程序中获 取到当前行的关键字段的值呢？方法有多种，但最可靠的方法还是通过GridView的DataKeys属性。下面程序是示范：<br style="clear: both; " />1.在进行数据绑定之时，设置DataKeyNames属性的值：<br style="clear: both; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;this.GridView1.DataSource = ds.Tables[0];<br style="clear: both; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;this.GridView1.DataKeyNames = new string[] { "CustomerID", "CompanyName" };<br style="clear: both; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;this.GridView1.DataBind();<br style="clear: both; " />此行程序的作用是将CustomerID和CompanyName两个字段的值放入到DataKeys数组中。</p><p style="word-wrap: break-word; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; ">2.在GridView1_RowDeleting事件中写如下程序：<br style="clear: both; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;string id = this.GridView1.DataKeys[e.RowIndex]["CustomerID"].ToString();<br style="clear: both; " />&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;string name = this.GridView1.DataKeys[e.RowIndex]["CompanyName"].ToString();<br style="clear: both; " />这样就获取到了当前行记录在DataKeys数组中的值。</p><p style="word-wrap: break-word; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; "><strong>五、事件</strong></p><p style="word-wrap: break-word; margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; ">DataBinding&nbsp;<wbr>&nbsp;<wbr>&nbsp;当服务器控件绑定到数据源时发生。（从 Control 继承。）<br style="clear: both; " />DataBound&nbsp;<wbr>&nbsp;<wbr>&nbsp;在服务器控件绑定到数据源后发生。（从 BaseDataBoundControl 继承。）<br style="clear: both; " />Disposed&nbsp;<wbr>&nbsp;<wbr>&nbsp;当从内存释放服务器控件时发生，这是请求 ASP.NET 页时服务器控件生存期的最后阶段。（从 Control 继承。）<br style="clear: both; " />Init&nbsp;<wbr>&nbsp;<wbr>&nbsp;当服务器控件初始化时发生；初始化是控件生存期的第一步。（从 Control 继承。）<br style="clear: both; " />Load&nbsp;<wbr>&nbsp;<wbr>&nbsp;当服务器控件加载到 Page 对象中时发生。（从 Control 继承。）<br style="clear: both; " />PageIndexChanged 在单击某一页导航按钮时，但在 GridView 控件处理分页操作之后发生。<br style="clear: both; " />PageIndexChanging 在单击某一页导航按钮时，但在 GridView 控件处理分页操作之前发生。<br style="clear: both; " />PreRender&nbsp;<wbr>&nbsp;<wbr>&nbsp;在加载 Control 对象之后、呈现之前发生。（从 Control 继承。）<br style="clear: both; " />RowCancelingEdit 单击编辑模式中某一行的&#8220;取消&#8221;按钮以后，在该行退出编辑模式之前发生。<br style="clear: both; " />RowCommand 当单击 GridView 控件中的按钮时发生。<br style="clear: both; " />RowCreated 在 GridView 控件中创建行时发生。<br style="clear: both; " />RowDataBound 在 GridView 控件中将数据行绑定到数据时发生。<br style="clear: both; " />RowDeleted 在单击某一行的&#8220;删除&#8221;按钮时，但在 GridView 控件删除该行之后发生。<br style="clear: both; " />RowDeleting 在单击某一行的&#8220;删除&#8221;按钮时，但在 GridView 控件删除该行之前发生。<br style="clear: both; " />RowEditing 发生在单击某一行的&#8220;编辑&#8221;按钮以后，GridView 控件进入编辑模式之前。<br style="clear: both; " />RowUpdated 发生在单击某一行的&#8220;更新&#8221;按钮，并且 GridView 控件对该行进行更新之后。<br style="clear: both; " />RowUpdating 发生在单击某一行的&#8220;更新&#8221;按钮以后，GridView 控件对该行进行更新之前。<br style="clear: both; " />SelectedIndexChanged 发生在单击某一行的&#8220;选择&#8221;按钮，GridView 控件对相应的选择操作进行处理之后。<br style="clear: both; " />SelectedIndexChanging 发生在单击某一行的&#8220;选择&#8221;按钮以后，GridView 控件对相应的选择操作进行处理之前。<br style="clear: both; " />Sorted 在单击用于列排序的超链接时，但在 GridView 控件对相应的排序操作进行处理之后发生。<br style="clear: both; " />Sorting 在单击用于列排序的超链接时，但在 GridView 控件对相应的排序操作进行处理之前发生。<br style="clear: both; " />Unload&nbsp;<wbr>&nbsp;<wbr>&nbsp;当服务器控件从内存中卸载时发生。（从 Control 继承。）</p></div>&nbsp;<img src ="http://www.cnitblog.com/yide/aggbug/79111.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2012-04-20 11:49 <a href="http://www.cnitblog.com/yide/archive/2012/04/20/79111.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c#--gridview--HyperLinkField</title><link>http://www.cnitblog.com/yide/archive/2012/04/19/79082.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Thu, 19 Apr 2012 07:53:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2012/04/19/79082.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/79082.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2012/04/19/79082.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/79082.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/79082.html</trackback:ping><description><![CDATA[<div>&nbsp; &nbsp; &nbsp;&lt;asp:GridView ID="GridView1" runat="server" AutoGenerateSelectButton="True"&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DataKeyNames="pr_key" onrowcommand="GridView1_RowCommand"&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Width="100%"&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;Columns&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;asp:HyperLinkField DataTextField="pr_key" HeaderText="pr_key"&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; NavigateUrl="~/WorkFlow/RequestOrder.aspx?id=" Target="_blank" DataNavigateUrlFields="pr_key" DataNavigateUrlFormatString="~/WorkFlow/RequestOrder.aspx?id={0}" /&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/Columns&gt;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &lt;/asp:GridView&gt;</div><img src ="http://www.cnitblog.com/yide/aggbug/79082.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2012-04-19 15:53 <a href="http://www.cnitblog.com/yide/archive/2012/04/19/79082.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C#--释放资源--事务</title><link>http://www.cnitblog.com/yide/archive/2012/04/17/78986.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Tue, 17 Apr 2012 00:32:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2012/04/17/78986.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/78986.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2012/04/17/78986.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/78986.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/78986.html</trackback:ping><description><![CDATA[<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
<p style="text-indent: -18pt; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0; mso-list: l0 level1 lfo1" class="MsoListParagraph"><span style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin" lang="EN-US"><span style="mso-list: Ignore"><font face="Calibri">1.</font><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">开启资源应注意尽早释放，关闭</span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">第一种方式：</span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><font face="Calibri">Try</font></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><font face="Calibri">{ </font></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><font face="Calibri"><span style="mso-spacerun: yes">&nbsp; </span>Conn.open();</font></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><span style="mso-spacerun: yes"><font face="Calibri">&nbsp; </font></span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">具体处理部分</span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><font face="Calibri">}</font></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><font face="Calibri">Catch(sqlException ex)</font></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><font face="Calibri">{</font></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><font face="Calibri"><span style="mso-spacerun: yes">&nbsp;</span>}</font></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><font face="Calibri">Finally</font></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><font face="Calibri">{</font></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><font face="Calibri"><span style="mso-spacerun: yes">&nbsp;</span>Conn.close();</font></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><font face="Calibri">}</font></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
<p style="text-indent: -18pt; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0; mso-list: l0 level1 lfo1" class="MsoListParagraph"><span style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin" lang="EN-US"><span style="mso-list: Ignore"><font face="Calibri">2.</font><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">使用</span><span lang="EN-US"><font face="Calibri">using </font></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">语句块</span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><font face="Calibri">Using (sqlconnection conn = new sqlconnection( connectstring) )</font></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><font face="Calibri">{</font></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><font face="Calibri"><span style="mso-spacerun: yes">&nbsp;</span>Conn.open() ;</font></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">具体处理语句；</span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><font face="Calibri">}</font></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">最好以上两种方式结合使用；</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Calibri">3.</font></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">利用事务块处理</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Calibri"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>Using (Transactionscope scope = new TransactionScope( TransactionScopeOption.Required))</font></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Calibri"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{</font></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><span style="mso-spacerun: yes"><font face="Calibri">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">具体处理语句；</span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Calibri"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Scope.complete () ;</font></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><font face="Calibri"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>}</font></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
<p style="text-indent: -18pt; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0; mso-list: l0 level1 lfo1" class="MsoListParagraph"><span style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin" lang="EN-US"><span style="mso-list: Ignore"><font face="Calibri">3.</font><span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">调用存储过程</span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><font face="Calibri">Create procedure regionupdate (@regionid interger , @regiondescription nchar(50)) as</font></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><font face="Calibri">Set nocount off</font></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><font face="Calibri">Update region</font></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><font face="Calibri"><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>Set regiondescription = @regiondescription</font></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><font face="Calibri">Where region = @regionid</font></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><font face="Calibri">Go</font></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><font face="Calibri">Sqlcommand cmd = new sqlcommand(&#8220;</font></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">过程名</span><span lang="EN-US"><font face="Calibri">&#8221; , conn);</font></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><font face="Calibri">cmd.commandtype = commandtype.storedprocedure ;</font></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><font face="Calibri">cmd.parameters.addwithvalue(&#8220;</font><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#64;&#116;&#101;&#103;&#105;&#111;&#110;&#105;&#100;&#8221;&#44;&#50;&#51;&#41;"><u><font color="#0000ff" face="Calibri">@tegionid&#8221;,23)</font></u></a><font face="Calibri">;</font></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><font face="Calibri">cmd.parameters.addwithvalue(&#8220;</font><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#64;&#116;&#101;&#103;&#105;&#111;&#110;&#105;&#100;&#8221;&#44;&#50;&#51;&#41;"><u><font color="#0000ff" face="Calibri">@tegiondescription&#8221;,&#8221;something&#8221;)</font></u></a><font face="Calibri">;</font></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span style="display: none; mso-hide: all" lang="EN-US"><font face="Calibri">,23);<o:p></o:p></font></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span style="display: none; mso-hide: all" lang="EN-US"><font face="Calibri">nid"ters.addwithvalue(".storedprocedure ;egiondescription Option.Required))<o:p></o:p></font></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><font face="Calibri"></font></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><font face="Calibri">cmd.executenonquery();</font></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
<p style="text-indent: 0cm; margin: 0cm 0cm 0pt 18pt; mso-char-indent-count: 0" class="MsoListParagraph"><span lang="EN-US"><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><o:p><font face="Calibri">&nbsp;</font></o:p></span></p>
<p style="margin: 0cm 0cm 0pt" class="MsoNormal"><span lang="EN-US"><o:p><font face="Calibri">&nbsp;</font></o:p></span></p><img src ="http://www.cnitblog.com/yide/aggbug/78986.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2012-04-17 08:32 <a href="http://www.cnitblog.com/yide/archive/2012/04/17/78986.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c#--excel</title><link>http://www.cnitblog.com/yide/archive/2012/04/15/78915.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Sun, 15 Apr 2012 12:00:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2012/04/15/78915.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/78915.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2012/04/15/78915.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/78915.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/78915.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一、将DATASET中的内容导出到EXCEL或XML文件中CodeCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->&nbsp;1using&nbsp;System;&nbsp;2using&nbsp;System.Data;&nbsp;3using...&nbsp;&nbsp;<a href='http://www.cnitblog.com/yide/archive/2012/04/15/78915.html'>阅读全文</a><img src ="http://www.cnitblog.com/yide/aggbug/78915.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2012-04-15 20:00 <a href="http://www.cnitblog.com/yide/archive/2012/04/15/78915.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>.NET dataset </title><link>http://www.cnitblog.com/yide/archive/2012/04/15/78914.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Sun, 15 Apr 2012 11:56:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2012/04/15/78914.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/78914.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2012/04/15/78914.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/78914.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/78914.html</trackback:ping><description><![CDATA[<div id="app-share-content">
<p><a target="_blank"><font size="5">.NET特征数据集</font> </a><br />&nbsp;&nbsp;&nbsp; <a target="_blank">1 -使用断开数据 </a><br />&nbsp;&nbsp;&nbsp; 在DataSet中的数据是从数据库断开。一旦你获取到使用一个DataAdapter对象数据集查询的结果，但已不再是一个DataSet和数据库之间的连接。所做的更改DataSet的内容不会影响数据库。如果其他用户修改数据库中对应于DataSet中的数据的数据，你不会看到你的<a target="_blank">DataSet</a>中的更改。 <br />&nbsp;&nbsp;&nbsp; 断开数据结构与工作肯定有它的好处。第一次使用断开数据的主要好处是，它不需要实时连接到数据库。一旦你获取到DataSet对象查询的结果，您可以关闭连接到数据库并继续与DataSet中的数据。 <br />&nbsp;&nbsp;&nbsp; 断开连接的数据，如<a target="_blank">DataSet</a>的结构也将帮助你建立多层次的应用。如果应用程序使用的业务对象在中间层访问数据库服务器上运行，业务对象需要通过断开连接的数据结构，以客户应用程序。DataSet对象是专为在这种情况下使用。您可以通过从一个组件DataSet的内容到另一个。该组件接收的数据能与作为DataSet（如果组件是使用微软的。NET框架）或XML文档的信息。 <br />&nbsp;&nbsp;&nbsp;<a target="_blank">2 -滚动，排序，搜索和过滤 </a><br />&nbsp;&nbsp;&nbsp; DataSet对象可以让你随时检查DataSet中的任何行的内容。你可以循环来回通过查询的结果经常是你喜欢。这使得该场景中，你的代码需要遍历数据，如在报告程序，数据集对象的理想选择。您也可以轻松构建一个应用程序，允许通过一个查询结果的用户来回滚动。<br />&nbsp;&nbsp;&nbsp; DataSet对象也让你改变你的视图的查询结果。你可以在DataSet中排序上的列或列数列计算数据。您可以搜索一个简单的搜索条件的数据行。您也可以应用过滤器DataSet中的数据，以便能满足只行所需条件是可见的。 <br />&nbsp;&nbsp;&nbsp;<a target="_blank">3 -使用分层数据 </a><br />&nbsp;&nbsp;&nbsp; DataSet对象是设计为使用分层数据。DataSet对象可以定义之间的数据存储在DataSet中的表之间的关系。 <br /><a target="_blank">&nbsp;&nbsp;&nbsp; 4 -缓存变化</a> <br />&nbsp;&nbsp;&nbsp; 与只读数据的工作很容易。在建立一个数据库应用程序的最大挑战之一是转化为对数据库的内容更改用户的输入。建设成一个多层次的应用程序，如逻辑可以提出一个更大的挑战，如果你的应用程序需要缓存的变化，并提交给你的数据库中的所有一次。 <br />&nbsp;&nbsp;&nbsp; DataSet对象可以让你变成一个缓存的数据，以便您可以提交到数据库使用DataAdapter的变化一行。 您也可以在DataSet检查，以确定如何修改行的行已更改（插入，修改或删除），以及比较两者的每个行的原始值和当前值。 <br /><a target="_blank">&nbsp;&nbsp;&nbsp; 5 - XML集成</a> <br />&nbsp;&nbsp;&nbsp; ADO.NET的DataSet是从底层到使用XML。您可以保存和载入DataSet的内容作为XML文档和文件。该数据集还可以单独成一个XML架构文件的架构信息（表，列和约束信息）。<br />&nbsp;&nbsp;&nbsp; 在ADO.NET中，DataSet对象和XML文档是可以互换的。人们很容易从一个数据结构转变到另一边。这种双重性使开发人员可以使用的接口他们最舒服。XML程序员可以使用DataSet对象为XML文件，数据库程序员可以使用DataSet对象的XML文档。 <br /><a target="_blank">&nbsp;&nbsp;&nbsp; 6 -统一功能</a> <br />&nbsp;&nbsp;&nbsp; 谁拥有使用ADO开发工作可能知道Recordset对象具有的特点类似于DataSet的人。ADO Recordset对象的支持，如筛选，搜索，排序，更新和缓存的功能。然而，以何种方式在您打开一个记录在决定哪些功能是提供一个Recordset中的很大一部分。</p></div><img src ="http://www.cnitblog.com/yide/aggbug/78914.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2012-04-15 19:56 <a href="http://www.cnitblog.com/yide/archive/2012/04/15/78914.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c#--索引器的使用</title><link>http://www.cnitblog.com/yide/archive/2012/04/11/78765.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Wed, 11 Apr 2012 12:50:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2012/04/11/78765.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/78765.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2012/04/11/78765.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/78765.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/78765.html</trackback:ping><description><![CDATA[<div class="postTitle">
<h1><a id="cb_post_title_url" class="postTitle2" href="http://www.cnblogs.com/jarod99/archive/2009/01/09/1372453.html"><u><font color="#800080">C# 类中索引器的使用</font></u></a></h1></div>
<div id="cnblogs_post_body">
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 索引器(Indexer)是C#引入的一个新型的类成员，它使得类中的对象可以像数组那样方便、直观的被引用。索引器非常类似于属性，但索引器可以有参数列表，且只能作用在实例对象上，而不能在类上直接作用。定义了索引器的类可以让您像访问数组一样的使用 [ ] 运算符访问类的成员。（当然高级的应用还有很多，比如说可以把数组通过索引器映射出去等等）</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 本文只是简单演示一下索引器的概念和基本的使用方法：</p>
<p>请看代码，下面是类的定义，中间包含了一个索引器定义</p>
<div class="cnblogs_code"><img style="display: none" id="Code_Closed_Image_115008" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"  alt="" /><img id="Code_Open_Image_115008" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"  alt="" /><span id="Code_Closed_Text_115008" class="cnblogs_code_Collapse">类的定义</span><span id="Code_Open_Text_115008"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;Person<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">定义两个字段信息</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;name;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;password;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">定义一个&nbsp;Name&nbsp;属性来操作&nbsp;name&nbsp;字段</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;Name<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;{&nbsp;name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;value;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">get</span><span style="color: #000000">&nbsp;{&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;name;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">定义一个&nbsp;Password&nbsp;属性来操作&nbsp;password&nbsp;字段</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;Password<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">set</span><span style="color: #000000">&nbsp;{&nbsp;password&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;value;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">get</span><span style="color: #000000">&nbsp;{&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;password;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">定义索引器，name&nbsp;字段的索引值为&nbsp;0&nbsp;，password&nbsp;字段的索引值为&nbsp;1</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">[</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;index]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">get</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(index&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">0</span><span style="color: #000000">)&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;name;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(index&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">1</span><span style="color: #000000">)&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;password;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&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 />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">set</span><span style="color: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(index&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">0</span><span style="color: #000000">)&nbsp;name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;value;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(index&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #800080">1</span><span style="color: #000000">)&nbsp;password&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;value;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span></span></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>下面是使用索引器的方法：</p>
<div class="cnblogs_code"><img style="display: none" id="Code_Closed_Image_115222" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"  alt="" /><img id="Code_Open_Image_115222" align="top" src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"  alt="" /><span id="Code_Closed_Text_115222" class="cnblogs_code_Collapse">索引器使用</span><span id="Code_Open_Text_115222"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">protected</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;Page_Load(</span><span style="color: #0000ff">object</span><span style="color: #000000">&nbsp;sender,&nbsp;EventArgs&nbsp;e)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">声明并实例化这个类</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Person&nbsp;p&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;Person();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">使用索引器的方式来给类的两个属性赋值</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[</span><span style="color: #800080">0</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">jarod</span><span style="color: #800000">"</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[</span><span style="color: #800080">1</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">123456,./</span><span style="color: #800000">"</span><span style="color: #000000">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">使用类属性取得两个字段信息</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Label1.Text&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;p.Name&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">&nbsp;/&nbsp;</span><span style="color: #800000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;p.Password;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span></span></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 非常简单，在上面的类中我们把类的 name 字段映射的索引值为 0，而 password 字段映射的索引值为 1。有了这个映射就可以使用以下方式为类的 name 和 password 赋值了。</p>
<div class="cnblogs_code"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[</span><span style="color: #800080">0</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">jarod</span><span style="color: #800000">"</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">设置&nbsp;name&nbsp;字段值</span><span style="color: #008000"><br /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[</span><span style="color: #800080">1</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #800000">"</span><span style="color: #800000">123456,./</span><span style="color: #800000">"</span><span style="color: #000000">;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">设置&nbsp;password&nbsp;字段值</span><span style="color: #008000"><br /></span></div>
<p>&nbsp;</p>
<p>赋值后，就可以使用属性方法访问到刚刚给两个字段赋的值了。</p>
<p>&nbsp;</p>
<p>&nbsp;</p></div><img src ="http://www.cnitblog.com/yide/aggbug/78765.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2012-04-11 20:50 <a href="http://www.cnitblog.com/yide/archive/2012/04/11/78765.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C# --索引器四个例子</title><link>http://www.cnitblog.com/yide/archive/2012/04/11/78764.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Wed, 11 Apr 2012 12:44:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2012/04/11/78764.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/78764.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2012/04/11/78764.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/78764.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/78764.html</trackback:ping><description><![CDATA[<div class="tit">C# 索引器四个例子：普通索引器，字符串索引器，接口定义索引器，泛型索引器。</div>
<table style="width: 100%; table-layout: fixed">
<tbody>
<tr>
<td>
<div id="blog_text" class="cnt">
<p>//普通索引器</p>
<p>using System;</p>
<p>namespace Index1<br />{<br />&nbsp;&nbsp;&nbsp; class TempRecord<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private float[] temps = new float[10] { 56.2F, 56.7F, 56.5F, 56.9F, 58.8F, <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 61.3F, 65.9F, 62.1F, 59.2F, 57.5F };<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.DateTime date { get; set; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public int Length<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return temps.Length; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public float this[int index]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return temps[index];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temps[index] = value;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; class MainClass<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static void Main()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TempRecord tempRecord = new TempRecord();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tempRecord[3] = 58.3F;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tempRecord[5] = 60.1F;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt; 10; i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (i &lt; tempRecord.Length)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Console.WriteLine("Element #{0} = {1}", i, tempRecord[i]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Console.WriteLine("Index value of {0} is out of range", i);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />}</p>
<p>效果：</p>
<p><span><img class="blogimg" border="0" src="http://hiphotos.baidu.com/jiang_yy_jiang/pic/item/9afd994390151c7b9113c67c.jpg" small="0"  alt="" /></span><br /></p>
<p>//字符串，自定义索引器</p>
<p>using System;</p>
<p>namespace Index2<br />{<br />&nbsp;&nbsp;&nbsp; class DayCollection<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string[] days = { "星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日" };<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private int GetDay(string testDay)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i = 0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (string day in days)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (day == testDay)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return -1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public int this[string day]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return (GetDay(day));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; class Program<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static void Main(string[] args)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DayCollection week = new DayCollection();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Console.WriteLine(week["星期五"]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Console.WriteLine(week["星期八"]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />}<br /></p>
<p>效果：</p>
<p><span><img class="blogimg" border="0" src="http://hiphotos.baidu.com/jiang_yy_jiang/pic/item/d98631f2def63d79b27ec57c.jpg" small="0"  alt="" /></span><br /></p>
<p>//泛型索引器</p>
<p>using System;</p>
<p><br />namespace Index3<br />{<br />&nbsp;&nbsp;&nbsp; class SampleCollection&lt;T&gt;<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private T[] arr = new T[100];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //this 关键字用于定义索引器。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //索引器不必根据整数值进行索引，自定义决定如何定义特定的查找机制。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //索引器可以有多个形参，例如当访问二维数组时。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //索引器可被重载。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public T this[int i]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return arr[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arr[i] = value;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; // This class shows how client code uses the indexer<br />&nbsp;&nbsp;&nbsp; class Program<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static void Main(string[] args)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SampleCollection&lt;string&gt; stringCollection = new SampleCollection&lt;string&gt;();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stringCollection[0] = "Hello, World";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Console.WriteLine(stringCollection[0]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />}<br /></p>
<p>效果：</p>
<p><span><img class="blogimg" border="0" src="http://hiphotos.baidu.com/jiang_yy_jiang/pic/item/27f19382c5657ec80ef4d267.jpg" small="0"  alt="" /></span><br /></p>
<p>//接口实现索引器</p>
<p>using System;</p>
<p>namespace Index4<br />{<br />&nbsp;&nbsp;&nbsp; public interface ISomeInterface<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int this[int index]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; class IndexerClass : ISomeInterface<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private int[] arr = new int[100];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public int this[int index]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (index &lt; 0 || index &gt;= 100)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return arr[index];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; set<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!(index &lt; 0 || index &gt;= 100))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arr[index] = value;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; class MainClass<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static void Main()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IndexerClass test = new IndexerClass();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test[2] = 4;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; test[5] = 32;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (int i = 0; i &lt;= 10; i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; System.Console.WriteLine("Element #{0} = {1}", i, test[i]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; }<br />}<br /></p>
<p>效果：</p>
<p><span><img class="blogimg" border="0" src="http://hiphotos.baidu.com/jiang_yy_jiang/pic/item/71377811fef41e14c880c47c.jpg" small="0"  alt="" /></span><br /></p></div></td></tr></tbody></table><br /><img src ="http://www.cnitblog.com/yide/aggbug/78764.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2012-04-11 20:44 <a href="http://www.cnitblog.com/yide/archive/2012/04/11/78764.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c#--资源释放--析构</title><link>http://www.cnitblog.com/yide/archive/2012/04/11/78760.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Wed, 11 Apr 2012 12:16:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2012/04/11/78760.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/78760.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2012/04/11/78760.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/78760.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/78760.html</trackback:ping><description><![CDATA[<br />
<div class="content mt10"><pre id="question-content">有些对象,如connection、DataReader、DataSet等等，最后用完了后是用close()合适还是用dispose()？或者两个都要加上？还是最后都只用dispose()就可以？
我想知道的是怎么样才最少占用资源、程序性能最高？希望给出有力的答案，最好有参考，谢谢</pre></div><br /><pre id="best-answer-content" class="reply-text mb10">DataReader,DataSet在使用完后,Close.
connection一般是写在using里的,例如:
using(SqlConnection sqlConn=......)
{
//连接数据库
//对数据库操作,其间可能会用到DataReader,DataSet
//....
//关闭DataReader,DataSet
sqlConn.Close();
}

这样,sqlConn会在花括号结束时被自动Dispose,及时回收.</pre><br /><pre id="content-355285323" class="reply-text mb10">以connection来说，close是关闭连接，但是它是链接对象仍然存在，下一次需要该链接，只需要调整用open方法就行，而dispose()则是析构链接对象，当你需要链接时，需要重新实例化connection对象，和open()链接。
一般使用会用close()，
dispose()会释放内存，我一般不用这个，因为C#的垃圾回收就自动帮我们搞定，函数的作用域完成，就会自动析构，不用我们显式地析构，除非你的程序对内存空间有苛刻的要求 </pre><br /><br /><br /><br /><br /><img src ="http://www.cnitblog.com/yide/aggbug/78760.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2012-04-11 20:16 <a href="http://www.cnitblog.com/yide/archive/2012/04/11/78760.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c#--重写--重载--多态</title><link>http://www.cnitblog.com/yide/archive/2012/04/11/78757.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Wed, 11 Apr 2012 08:58:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2012/04/11/78757.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/78757.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2012/04/11/78757.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/78757.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/78757.html</trackback:ping><description><![CDATA[<p><br />一：重写是指重写基类的方法，在基类中的方法必须有修饰符virtual ,而在子类的方法中<br />必须指明override.<br />格式：<br />基类中：<br />public virtual void myMethod()<br />{}<br />子类中：<br />public override void myMethod()<br />{}<br />重写后，基类和子类对象访问myMethod()方法，结果都是子类重新定义后的方法，基类的方法相当<br />于被覆盖掉了。</p>
<p>二：重载<br />用于在给定了参数列表和一组候选函数成员的情况下，选择一个最佳成员来实施调用。</p>
<p>public void test(int x,int y ) {}</p>
<p>public void test(int x,ref y ) {}</p>
<p>public void test(int x,int y,string a ) {}</p>
<p>注：可考虑用泛型优化此用途。</p>
<p><br />三：多态性概述<br />当派生类从基类继承时，它会获得基类的所有方法、字段、属性和事件。若要更改基类的数据和行为，您有两种选择：可以使用新的派生成员替换基成员，或者可以重写虚拟的基成员。</p>
<p>使用新的派生成员替换基类的成员需要使用 new 关键字。如果基类定义了一个方法、字段或属性，则 new 关键字用于在派生类中创建该方法、字段或属性的新定义。new 关键字放置在要替换的类成员的返回类型之前。例如：</p>
<p>&nbsp;</p>
<p>public class BaseClass<br />{<br />&nbsp;&nbsp;&nbsp; public void DoWork() { }<br />&nbsp;&nbsp;&nbsp; public int WorkField;<br />&nbsp;&nbsp;&nbsp; public int WorkProperty<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return 0; }<br />&nbsp;&nbsp;&nbsp; }<br />}</p>
<p>public class DerivedClass : BaseClass<br />{<br />&nbsp;&nbsp;&nbsp; public new void DoWork() { }<br />&nbsp;&nbsp;&nbsp; public new int WorkField;<br />&nbsp;&nbsp;&nbsp; public new int WorkProperty<br />&nbsp;&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return 0; }<br />&nbsp;&nbsp;&nbsp; }<br />}</p>
<p>使用 new 关键字时，调用的是新的类成员而不是已被替换的基类成员。这些基类成员称为隐藏成员。如果将派生类的实例强制转换为基类的实例，就仍然可以调用隐藏类成员。例如：</p>
<p><br />&nbsp;<br />DerivedClass B = new DerivedClass();<br />B.DoWork();&nbsp; // Calls the new method.</p>
<p>BaseClass A = (BaseClass)B;<br />A.DoWork();&nbsp; // Calls the old method.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><br />&nbsp;</p><img src ="http://www.cnitblog.com/yide/aggbug/78757.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2012-04-11 16:58 <a href="http://www.cnitblog.com/yide/archive/2012/04/11/78757.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c#--重载-重写-覆盖</title><link>http://www.cnitblog.com/yide/archive/2012/04/11/78756.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Wed, 11 Apr 2012 08:34:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2012/04/11/78756.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/78756.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2012/04/11/78756.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/78756.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/78756.html</trackback:ping><description><![CDATA[<p><span style="font-size: 13px"><strong><span style="color: #0000ff">overload：</span></strong>重载指的是<strong><span style="color: #0000ff">同一个类</span></strong>中有两个或多个名字相同但是<strong><span style="color: #0000ff">参数不同</span></strong>的方法，(注:返回值不能区别函数是否重载)，<strong><span style="color: #0000ff">重载没有关键字</span></strong>。</span><br /><span style="font-size: 13px"><strong><span style="color: #0000ff">override：</span></strong>过载也称重写是指子类对父类中<strong><span style="color: #0000ff">虚函数或抽象函数</span></strong>的&#8220;覆盖&#8221;（这也就是有些书将过载翻译为覆盖的原因），但是这种&#8220;覆盖&#8221;和用new关键字来覆盖是有区别的。</span><br /><span style="font-size: 13px"><strong><span style="color: #0000ff">new：</span></strong>覆盖指的是不同类中（基类或派生类）有两个或多个返回类型、方法名、参数都相同，但是方法体不同的方法。</span><br /><span style="font-size: 13px">但是这种覆盖是一种表面上的覆盖，所以也叫<strong><span style="color: #0000ff">隐藏</span></strong>，被覆盖的父类方法是可以调用得到的。<br /><strong><span style="color: #0000ff">重载覆盖的发生条件：</span></strong><br />重载,必然发生在一个类中,函数名相同,参数类型或者顺序不同构成重载,与返回类型无关<br />重写,必然发生在基类和派生类中,其类函数用virtual修饰,派生类用override修饰<br />覆盖,在子类中写一个和基类一样名字(参数不同也算)的非虚函数,会让基类中的函数被隐藏,编译后会提示要求使用New关键字<br /><strong><span style="color: #800080">重载示例：</span></strong></span></p>
<div class="cnblogs_code"><pre><span style="color: #0000ff">        public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> Fun()<br />        {<br />            Console.WriteLine(</span><span style="color: #800000">"</span><span style="color: #800000">I am F</span><span style="color: #800000">"</span><span style="color: #000000">);<br />        }<br />        </span><span style="color: #0000ff">public</span><span style="color: #000000">  </span><span style="color: #0000ff">void</span><span style="color: #000000"> Fun(</span><span style="color: #0000ff">int</span><span style="color: #000000"> i)<br />        {<br />            Console.WriteLine(</span><span style="color: #800000">"</span><span style="color: #800000">I am F,i={0}</span><span style="color: #800000">"</span><span style="color: #000000">,i);<br />        }</span></pre></div>
<p><strong><span style="color: #800080; font-size: 13px">override重写特性：</span></strong><br /><span style="font-size: 13px"><span id="xn3_e1b1246573c8fd4e4e733d4d9a1492e6" class="sentence"><span class="input"></span></span><span id="xn4_fa2a4632d7032e7743b4bd231cc742e5" class="sentence">由 <span class="input">override</span> 声明重写的方法称为重写基方法，</span><span id="xn5_1c3097df94cf088f7dbbe9ee6591ec56" class="sentence">重写的基方法必须与 <span class="input">override</span> 方法具有相同的签名。</span><span id="xn7_62e8e6829d751020f5bc733d2c313db0" class="sentence"><br /></span><span id="xn8_efbecaae2d96109a8f71a31b7a190326" class="sentence">重写的基方法必须是 <span class="input">virtual</span>、<span class="input">abstract</span> 或 <span class="input">override</span> 的</span></span><span style="font-size: 13px"><span id="xn7_62e8e6829d751020f5bc733d2c313db0" class="sentence">，不能重写非虚方法或静态方法</span></span><span style="font-size: 13px"><span id="xn8_efbecaae2d96109a8f71a31b7a190326" class="sentence">。</span><span id="xn9_6d50472df2f73d1a3117ed59ecaae44f" class="sentence"><span class="input"><br class="input" /></span></span><span id="xn10_84b68bd33a6b4d061d50d866073e0dc4" class="sentence"><span class="input">override</span>的方法和<span class="input">virtual</span>的方法必须具有相同的<span style="color: #000000"><span style="color: #000000">访问级别修饰符</span></span></span></span><span style="font-size: 13px"><span id="xn9_6d50472df2f73d1a3117ed59ecaae44f" class="sentence">，不能更改 <span class="input">virtual</span> 方法的可访问性</span></span><span style="font-size: 13px"><span id="xn10_84b68bd33a6b4d061d50d866073e0dc4" class="sentence"><span style="color: #000000"><span style="color: #000000"></span>。<br /></span></span><span id="xn11_e2a965c8d2a3d2be79213a5990824ab1" class="sentence">不能使用<span class="input">new</span>、<span class="input">static</span> 或 <span class="input">virtual</span> 修饰符来修改 <span class="input">override</span> 方法。</span></span><br /><span style="font-size: 13px" id="xn12_1f224c246d85e382d9ed4ddc4eb2c371" class="sentence">重写属性声明必须指定与继承属性完全相同的访问修饰符、类型和名称，并且被重写的属性必须是<span class="input">virtual</span>、<span class="input">abstract</span> 或 <span class="input">override</span> 的。</span><span style="font-size: 13px"><strong><span style="color: #800080"></span></strong></span><br /><span style="font-size: 13px"><strong><span style="color: #800080">覆盖示例：<br /></span></strong><span style="color: #000000">当我们没有使用覆盖时，派生类继承基类，结果如下：</span><strong><span style="color: #800080"><br /></span></strong></span></p>
<div class="cnblogs_code"><pre><span style="color: #000000">    </span><span style="color: #0000ff">class</span><span style="color: #000000"> A<br />    {<br />        </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> Fun()<br />        {<br />            Console.WriteLine(</span><span style="color: #800000">"</span><span style="color: #800000">I am F</span><span style="color: #800000">"</span><span style="color: #000000">);<br />        }<br />    }<br />    </span><span style="color: #0000ff">class</span><span style="color: #000000"> Program:A<br />    {</span><span style="color: #008000"><br /></span><span style="color: #000000">        </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> Main(</span><span style="color: #0000ff">string</span><span style="color: #000000">[] args)<br />        {<br />            Program p </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Program();<br />            p.Fun();<br />            Console.Read();<br />        }<br />    }<br /><span style="color: #008000; font-size: 13px">//结果为：I am F</span><br /></span></pre></div>
<p><span style="color: #000000"><span style="font-size: 13px">当我们覆盖原来的方法呢？</span><br /></span></p>
<div class="cnblogs_code"><pre><span style="color: #0000ff">    class</span><span style="color: #000000"> A<br />    {<br />        </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> Fun()<br />        {<br />            Console.WriteLine(</span><span style="color: #800000">"</span><span style="color: #800000">I am F</span><span style="color: #800000">"</span><span style="color: #000000">);<br />        }<br />    }<br />    </span><span style="color: #0000ff">class</span><span style="color: #000000"> Program:A<br />    {<br />        </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> Fun()<br />        {<br />            </span><span style="color: #0000ff">int</span><span style="color: #000000"> i </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #800080">1</span><span style="color: #000000">;<br />            Console.WriteLine(</span><span style="color: #800000">"</span><span style="color: #800000">I am F,i={0}</span><span style="color: #800000">"</span><span style="color: #000000">, i);<br />        }<br />        </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> Main(</span><span style="color: #0000ff">string</span><span style="color: #000000">[] args)<br />        {<br />            Program p </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Program();<br />            p.Fun();<br />            Console.Read();<br />        }<br />    }<br /><span style="color: #008000">//结果为：I am F,i=1</span><br /></span></pre></div>
<p><span style="font-size: 13px"><strong><span style="color: #800080">new覆盖与重写、重载的区别：<br /><span style="color: #ff00ff">当子类与父类的参数不同时</span><br /></span></strong><span style="color: #ff00ff">当基类函数不是虚函数时，基类函数将被隐藏。（因为子类和基类不在同一范围内，所以不是重载）<br />当基类函数是虚函数时，基类函数将被隐藏。（</span></span><span style="color: #ff00ff; font-size: 13px">因为子类和基类不在同一范围内，所以不是重载；因为参数不同，所以不是重写</span><span style="font-size: 13px"><span style="color: #ff00ff">）<br /></span></span><span style="font-size: 13px"><strong><span style="color: #800080"><span style="color: #ff00ff">当子类与父类的参数相同时<br /></span></span></strong></span><span style="font-size: 13px"><span style="color: #ff00ff">当基类函数不是虚函数时，基类函数将被隐藏。（</span></span><span style="font-size: 13px"><span style="color: #ff00ff">因为子类和基类不在同一范围内，所以不是重载，</span></span><span style="font-size: 13px"><span style="color: #ff00ff">因为基类不是虚函数，所以是隐藏不是重写）<br /></span></span><span style="font-size: 13px"><span style="color: #ff00ff">当基类函数是虚函数时，基类函数将被覆盖。（</span></span><span style="font-size: 13px"><span style="color: #ff00ff">因为子类和基类不在同一范围内，所以不是重载）</span></span><br /><span style="font-size: 13px">那么为什么不是重写呢？我们可以做一个例子还测试一下，这个例子在虚函数时已经举过，在这里为了说明此问题在重复一下：</span></p>
<div class="cnblogs_code"><pre><span style="color: #000000"> </span><span style="color: #0000ff">   class</span><span style="color: #000000"> A<br />    {<br />        </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">virtual</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> Fun()<br />        {<br />            Console.WriteLine(</span><span style="color: #800000">"</span><span style="color: #800000">I am F</span><span style="color: #800000">"</span><span style="color: #000000">);<br />        }<br />    }<br />    </span><span style="color: #0000ff">class</span><span style="color: #000000"> Program:A<br />    {<br />        </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="background-color: #888888"><span style="color: #0000ff">override</span></span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> Fun()<br />        {<br />            </span><span style="color: #0000ff">int</span><span style="color: #000000"> i </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #800080">1</span><span style="color: #000000">;<br />            Console.WriteLine(</span><span style="color: #800000">"</span><span style="color: #800000">I am F,i={0}</span><span style="color: #800000">"</span><span style="color: #000000">, i);<br />        }<br />        </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> Main(</span><span style="color: #0000ff">string</span><span style="color: #000000">[] args)<br />        {<br />            A p </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> Program();<br />            p.Fun();<br />            Console.Read();<br />        }<br />    }</span></pre></div>
<p><span style="font-size: 13px">我们知道，以上例子中，派生类存在一个对基类的重写方法，所以结果为：I am F ,i=1</span><br /><span style="font-size: 13px">若是我们把override换成new，那么如果是重写的话，会和上面的结果相等，但实际结果是什么呢?</span><br /><span style="font-size: 13px">实际的结果是：I am F</span><br /><span style="font-size: 13px">由此我们知道，</span><span style="color: #000000; font-size: 13px">当基类函数是虚函数时，基类函数不是重写，而是覆盖了基函数的同名函数。</span></p><img src ="http://www.cnitblog.com/yide/aggbug/78756.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2012-04-11 16:34 <a href="http://www.cnitblog.com/yide/archive/2012/04/11/78756.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c#--多态--解释</title><link>http://www.cnitblog.com/yide/archive/2012/04/11/78755.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Wed, 11 Apr 2012 08:31:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2012/04/11/78755.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/78755.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2012/04/11/78755.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/78755.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/78755.html</trackback:ping><description><![CDATA[<p align="left">&nbsp;</p><pre id="best-answer-content" class="reply-text mb10">多态又称后期绑定，是一种在运行时(just in time)指定方法调用地址的技术。

通常，编译器在编译期就能知道方法的地址，运行时直接加载这个地址上的堆栈代码（.net中指中间代码）就可以了，这被称为静态绑定或前期绑定，虽然很少使用这个术语。

编译器在编译期不能确定方法的地址，而只能在运行时确定的就被称为后期绑定（或动态联编）。例如，对于object类的ToString方法，其方法定义是返回类的名称，但是，调用这个方法却不一定能够返回类的名称（如String类），因为它有可能被派生类重写，多态技术确保运行时能够调用到正确的方法。

关于多态和继承的区别，继承实现了类型重用，而多态实现了方法重用。</pre><img src ="http://www.cnitblog.com/yide/aggbug/78755.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2012-04-11 16:31 <a href="http://www.cnitblog.com/yide/archive/2012/04/11/78755.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c#--封装的概念</title><link>http://www.cnitblog.com/yide/archive/2012/04/11/78754.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Wed, 11 Apr 2012 07:05:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2012/04/11/78754.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/78754.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2012/04/11/78754.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/78754.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/78754.html</trackback:ping><description><![CDATA[<table style="width: 100%; table-layout: fixed">
<tbody>
<tr>
<td>
<div id="blog_text" class="cnt">对于一个具有丰富结构化程序设计经验的程序员来说，面向对象的程序设计可能会给他们带来非常不自然的感觉。封装是实现面向对象程序设计的第一步，<font style="font-size: 20px" color="#ff2a0e">封装就是将数据或函数等集合在一个个的单元中（我们称之为类）</font>。被封装的对象通常被称为抽象数据类型。在本文中，我们将详细学习属性的特性。<br /><wbr></wbr>
<p><strong><font style="font-size: 18px">封装的概念</font></strong></p>
<p><font color="#fb1900">可以把程序按某种规则分成很多&#8220;块&#8220;，块与块之间可能会有联系，每个块都有一个可变部分和一个稳定的部</font></p>
<p><font color="#fb1900">分。我们需要把可变的部分和稳定的部分分离出来，将稳定的部分暴露给其他块，而将可变的部分隐藏起来，以</font></p>
<p><font color="#fb1900">便于随时可以让它修改。这项工作就是封装.<br /><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr></font></p>
<p><font color="#fb1900">例如：在用类实现某个逻辑的时候，<strong>类就是以上所说的块</strong>，实现功能的具体代码就是可变的部分，而<strong>public的</strong></font></p>
<p><font color="#fb1900"><strong>方</strong></font><font color="#fb1900"><strong>法或者属性则是稳定的部分。<br /></strong></font></p>
<p><strong><font style="font-size: 18px">封装的意义</font><br /></strong><wbr></wbr><br /><font style="font-size: 20px" color="#ff2a0e">封装的意义在于保护或者防止代码（数据）被我们无意中破坏。</font>在面向对象程序设计中<font color="#ff2a0e"><strong>数据</strong></font><font color="#000000">被看作是一个中心的原素并且和使用它的函数结合的很密切，从而保护它不被其它的函数意外的修改。<br /></font></p>
<p><font color="#000000"><font style="font-size: 20px" color="#ff290d">封装提供了一个有效的途径来保护数据不被意外的破坏。</font>相比我们将数据（用域来实现）在程序中定义为公用的（public）<font color="#ff290d">我们将它们(fields)定义为私有的（privat）在很多方面会更好。</font></font></p>
<p><wbr></wbr></p>
<p><font color="#000000">私有的数据可以用两种方式来间接的控制。下面我们看一些c#例子来学习这两种方法用以封装数据。第一种方法，我们<font color="#ff290d"><strong>使用传统的存、取方法</strong></font>。</font><font color="#000000">第二种方法我们用<strong><font color="#ff290d">属性</font></strong>（property）。无论我们使用哪种的方法，我们的目标是在使用数据的同时不能使它受到任何的破坏和改变。有如下好处<br /><wbr></wbr><br />其一: 使用者只需要了解如何通过类的接口使用类，而不用关心类的内部数据结构和数据组织方法。<br /><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr></font></p>
<p><font color="#000000">其二：高内聚，低耦合一直是我们所追求的，用好封装恰恰可以减少耦合<br /><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr></font></p>
<p><font color="#000000"><wbr></wbr><wbr></wbr>其三：只要对外接口不改变，可以任意修改内部实现，这个可以很好的应对变化<br /><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr><wbr></wbr></font></p>
<p><font color="#000000">其四：类具有了简洁清晰的对外接口，降低了使用者的学习过程<br /></font></p>
<p><wbr></wbr></p>
<p><font color="#000000"><strong><font style="font-size: 18px">用传统的读、写方法封装<br /></font></strong><wbr></wbr><br />让我们来看一个例子有一个类Department,为了操纵这个类中的数据（string departname）我们定义了一个读方法和一个写方法。<br />using system;<br />public class Department<br />{<br />private string departname;<br />.......</font></p>
<p>// 读方法<br />public string GetDepartname()<br />{<br />return departname;<br />}</p>
<p>//写方法<br />public void SetDepartname( string a)<br />{<br />departname=a;<br />}</p>
<p>}<br />通过上面的方法，我们可以保护私有数据不被外部程序所破坏。现在我们使用两个不同的方法来写和读数据<br />public static int Main(string[] args)<br />{<br />Department d = new Department();<br />d.SetDepartname("ELECTRONICS");<br />Console.WriteLine("The Department is :"+d.GetDepartname());<br />return 0;<br />}<br />在上面的例子中，我们不能直接访问类Department的实例d中的私有数据(string departname)，我们只能通过这两个方法来访问。<br /><wbr></wbr></p>
<p><wbr></wbr></p>
<p><font style="font-size: 18px"><strong>用属性来实现封装<br /></strong></font><wbr></wbr><br />属性是c#引入的一种语言成分，只有很少的语言支持属性。通过对属性的读和写来保护类中的域。第一种方法体身也是一种好的方式，但用属性来实现封装会更方便。<br />现在我们来看一个例子：<br />using system;<br />public class Department<br />{<br />private string departname;<br />public string Departname<br />{<br />get<br />{<br />return departname;<br />}<br />set<br />{<br />departname=value;<br />}<br />}<br />}<br />public class Departmentmain<br />{<br />public static int Main(string[] args)<br />{<br />Department d= new Department();<br />d.departname="Communication";<br />Console.WriteLine("The Department is :{0}",d.Departname);<br />return 0;<br />}<br />}<br />通过上面的例子，我们可以看到如何通过属性来实现封装。属性具有两种操作get和set。Get用来返回属性域的值。Set通过value这个变量来给属性域赋值。属性可以设为只读的(read-only)。这只需属性只具有一个set操作。<br /><wbr></wbr></p>
<p><strong>只读属性<br /></strong><wbr></wbr><br />using system;<br />public class ReadDepartment<br />{<br />private string departname;<br />public ReadDepartment(string avalue)<br />{<br />departname=avalue;<br />}<br />public string Departname<br />{<br />get<br />{<br />return departname;<br />}<br />}<br />}<br />public class ReadDepartmain<br />{<br />public static int Main(string[] args)<br />{<br />ReadDepartment d= new ReadDepartment("COMPUTERSCIENCE");<br />Console.WriteLine("The Department is: {0}",d.Departname);<br />return 0;<br />}<br />}<br />在上面的例子中我们看到了如何来实现一个只读的属性。类ReadDepartment拥有一个Departname属性只实现了get操作。它省略了写操作。这个特别的类拥有一个构造器，用来接受一个字符串变量。类ReadDepartmain中的Main方法创建了一个新的对象d。对像d的实例使用了类ReadDepartment带有一个字符串参数的构造器。因为上面的属性是只读的，所以我们不给给域departname赋值并且我们只侧读取此域中的值。当然属性也可以是只写的（write-only），这只需属性只具有一个get操作。<br /><strong><wbr></wbr><br /></strong></p>
<p><strong>只写属性</strong><br /><wbr></wbr><br />using system;<br />public class WriteDepartment<br />{<br />private string departname;</p>
<p>public string Departname<br />{<br />set<br />{<br />departname=value;<br />Console.WriteLine("The Department is :{0}",departname);<br />}<br />}<br />}<br />public class WriteDepartmain<br />{<br />public static int Main(string[] args)<br />{<br />WriteDepartment d= new WriteDepartment();<br />d.departname="COMPUTERSCIENCE";<br />return 0;<br />}<br />}<br />在上面的例子中我们看到了如何来实现一个只写的属性。类WriteDepartment拥有一个Departname属性只实现了set操作。它省略了读操作。<br /><wbr></wbr><br />总结<br /><wbr></wbr><br />封装是朝着面向对象程序设计迈出的第一步。本文向您展示了一些封装的知识。用传统的读、写两种方法可以实现封装，另一种实现封装的方法是使用属性。<strong><font style="font-size: 20px" color="#ff2a0e">使用属性的好处在于对象的使用者可以用一条语句来操作内部的数据。</font></strong></p></div></td></tr></tbody></table><br /><img src ="http://www.cnitblog.com/yide/aggbug/78754.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2012-04-11 15:05 <a href="http://www.cnitblog.com/yide/archive/2012/04/11/78754.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c#--封装总结</title><link>http://www.cnitblog.com/yide/archive/2012/04/11/78753.html</link><dc:creator>青蛙學堂</dc:creator><author>青蛙學堂</author><pubDate>Wed, 11 Apr 2012 06:56:00 GMT</pubDate><guid>http://www.cnitblog.com/yide/archive/2012/04/11/78753.html</guid><wfw:comment>http://www.cnitblog.com/yide/comments/78753.html</wfw:comment><comments>http://www.cnitblog.com/yide/archive/2012/04/11/78753.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/yide/comments/commentRss/78753.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/yide/services/trackbacks/78753.html</trackback:ping><description><![CDATA[<p>面向对象思想有三个核心要素：封装、继承与多态。如能正确理解这三要素，那么基本上可以算是在编程中建立了面向对象思想。在第二节中我曾介绍，在 C#中，所有数据类型的实例都是&#8220;对象&#8221;，不过最能体现对象特质的类型，还是&#8220;类&#8221;，同时它也是C#中最重要、最频繁使用的类型。接下来，我将通过介绍 C#的类，来充分理解对象封装的概念。<br /><br />所谓&#8220;对象&#8221;，形象地说，我们可以把它理解为一块积木。设计积木的人需要设计积木的外观与形状，还有内部的材质。堆积木的人对于内部的材质并不关心，他们只需要根据不同的外观与形状来决定堆放的位置。因此，对于开发者而言，要设计面向对象的程序，同时会是两个迥然不同的身份：设计者与使用者。<br /><br />先谈谈使用者。使用者的身份，就是利用已经提供给你的所有对象，根据需求，设计出自己需要实现的程序。就如堆积木的过程。这恰恰是面向对象编程的优势所在，那就是&#8220;对象的重用&#8221;。已经设计好的对象，可以被不同的使用者调用，这些功能既然已经实现，对于使用者而言，当然就免去了自己去设计的过程。正如堆积木那样，既然有了现成设计好的积木，使用者所要做的工作就是把这些积木最后组合起来，堆成不同的形状。.Net Framework所提供的类库，就是这样的积木。<br /><br />例如我们想把一个int类型转换成字符型，就没有必要自己去实现这种转换，直接调用.Net Framework提供的功能就可以了：<br />int i = 10;<br />string s = i.ToString();<br /><br />再比如我们想弹出一个Windows消息框，同样可以直接使用.Net Framework现有的类库：<br />MessageBox.Show(&#8220;Message&#8221;);<br /><br />在上述的例子中，i和MessageBox都是一个对象。<br /><br />再谈谈设计者的身份。虽然.Net Framework的类库功能已经非常强大，但它不可能考虑到业务的方方面面，如果需要使用一个根本就不存在的对象，此时就需要自己来设计了。例如图书管理系统，可能就需要用户，图书等对象。这就需要开发者自己来设计这些对象。<br /><br />既然最能体现&#8220;对象&#8221;思想的类型是&#8220;类&#8221;，我就来介绍一下C#中的类类型。C#中类的关键字是class。在一个class对象中，主要分为 field（字段）、property（属性）和method（方法），前面两个对应的是对象的属性，而method则对应对象的行为。一个典型的 class定义如下所示：<br />public class User<br />{<br />&nbsp;private string m_name;<br />&nbsp;private string m_password;<br />&nbsp;private int m_tryCounter;<br />&nbsp;public string Name<br />&nbsp;{<br />&nbsp; get {return m_name;}<br />&nbsp; set {m_name = value;}<br />&nbsp;}<br />&nbsp;public string Password<br />&nbsp;{ <br />&nbsp; get {return m_password;}<br />&nbsp; set {m_password = value;}<br />&nbsp;}<br />&nbsp;public void SignIn()<br />&nbsp;{&nbsp; <br />&nbsp; if (m_tryCounter &lt; 3)<br />&nbsp; {<br />&nbsp;&nbsp; if (IsValid())<br />&nbsp;&nbsp; {&nbsp; <br />&nbsp;&nbsp;&nbsp; m_tryCounter = 0;<br />&nbsp;&nbsp;&nbsp; Console.WriteLine("User {0} was signed in.", m_name);<br />&nbsp;&nbsp; }<br />&nbsp;&nbsp; else<br />&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp; m_tryCounter++;<br />&nbsp;&nbsp;&nbsp; Console.WriteLine("User {0} is invalid. Can&#8217;t Sign in.", m_name);<br />&nbsp;&nbsp; }<br />&nbsp; }<br />&nbsp; else<br />&nbsp; {<br />&nbsp;&nbsp; Console.WriteLine("You try to sign in more than 3 times. You are be denied.");<br />&nbsp; }<br />&nbsp;}<br />&nbsp;public void SignOut()<br />&nbsp;{<br />&nbsp; m_tryCounter = 0;<br />&nbsp; Console.WriteLine("User {0} was signed out.", m_name);<br />&nbsp;} <br />&nbsp;private bool IsValid()<br />&nbsp;{<br />&nbsp; if (m_name.ToUpper() == "ADMIN" &amp;&amp; m_password == "admin")<br />&nbsp; {<br />&nbsp;&nbsp; return true;<br />&nbsp; }<br />&nbsp; else<br />&nbsp; {<br />&nbsp;&nbsp; return false;<br />&nbsp; }<br />&nbsp;}<br />}<br /><br />字符串m_name，m_password，m_tryCounter就是类User的字段，Name，Password是类User的属性，而SignIn、SignOut和IsValid则是类User的方法。<br /><br />关于field，property和method，我会在之后的文章中介绍，这里主要介绍的是在这个类中出现的修饰符public、private等相关的知识。<br /><br />前面说到对象好比是一个积木，设计者需要定义好这个积木的外观和形状，也要考虑积木内部的制作，例如选用的材质，以及是空心还是实心。如果将这个积木剖开来看，实际上该对象应分为内、外两层。由于使用者只关心外部的实现，因此设计者就需要考虑，哪些实现应暴露在外，哪些实现应隐藏于内。这就体现了对象的封装的思想。<br /><br />封装对象，并非是将整个对象完全包裹起来，而是根据具体的需要，设置使用者访问的权限。在C#中，分别用修饰符public，internal，protected，private设定，分别修饰类的字段、属性和方法，甚至于类对象本身：<br />public：表明所有对象都可以访问；<br />protected internal：表明同一个程序集内的对象，或者该类对象以及其子类可以访问；<br />internal：表明只有同一个程序集的对象可以访问；<br />protected：表明只有该类对象及其子类对象可以访问；（关于继承，会在以后介绍）<br />private：表明只有对象本身在对象内部可以访问；<br /><br />可以看出，public的开放性最大，其次是protected internal，private的开放性最小。internal和protected居中。那么，internal和protected哪一个开放范围更大呢？我认为，没有完全绝对的结论。它们的范围前者体现一个横向的概念，后者则体现纵向的概念。如果是internal，那么外部程序集对象自然不能访问，但只要是居于同一个程序集中，则所有对象都可以访问它；如果是protected，那么即使是外部程序集对象，只要它继承了该对象，就可以访问，而即使是同一程序集，如果对象不是该类对象的子类，也是无法访问的。打一个比方，在我们的传统文化中，是非常强调&#8220;宗族&#8221;观念的，一个宗族的族长，对于本族人而言，权力极大，甚至掌握了生杀大权。以一个州府的范围为例，internal就好比是知府大人，只要是该州府的百姓，都属于他的管辖范围，而不管他是哪一个宗族。protected则好比是宗族的族长，只要是这个宗族的成员，都要服从他，哪怕该成员属于其他州府。我以前看过《雍正王朝》，其中就有这样一个情节，身为皇子的胤祯，竟然无法挽救自己心爱女人的命运，因为这个女人违反了她们宗族的族规，最后眼看着她被活活烧死，却只能黯然神伤，梦里萦回。<br /><br />以前面定义的User类而言，所有的字段m_name，m_password，m_tryCounter都是private的，因此User类的外部调用者无法调用它们，但请注意User类内部的方法比如SignIn或者属性Name，却完全可以调用。同样的，private方法IsValid，可以被SignIn方法调用，但对于外部调用者而言，则是无法调用的。而对于public属性Name，Password，public方法SignIn和 SignOut，外部的调用者是可以访问的。在后面的演练中，我们能够看出这之间的区别。通过这样分层次的封装，就可以充分保证对象的重用性和安全性。<br /><br />那么对于类类型而言，如何确定它们的访问权限呢？这要根据实际的需求来看了。假定这个User类是用于一个电子商务网站。那么电子商务系统在设计过程中，就需要调用到User类对象。显然，登录与退出功能是必须提供给外部使用者的，例如登录页面就会使用到User类。而IsValid()方法用于验证用户的合法性，虽然也非常必要，但该功能仅仅用于登录的时候核实用户身份，也就是说，IsValid方法只会被SignIn方法使用，但外部实用者却并不关心，因此，设置为private就是合理的。同样的道理，字段m_tryCounter也是如此。但如果需求发生改变，验证用户的功能不仅仅是登录的时候需要使用，在添加商品到购物车，下订单，付款的时候，都需要该功能，那么IsValid方法，就有必要修改为public方法了。<br /><br />所以，在设计程序的时候，除了要考虑识别对象，还要充分考虑该对象的封装。类对象内的字段、属性和方法，包括类本身，哪些应该暴露在外，哪些应该被隐藏，都需要根据实际的需求，给与正确的设计。<br /><br />演练：<br />（一）设计类User，并调用该类<br />1、打开Visual Studio.Net，选择&#8220;File&#8221;菜单的&#8220;new&#8221;，选择&#8220;Project&#8221;；<br />2、选择Visual C# Projects中的&#8220;Console Application&#8221;。在Location中，定位你要保存的项目的路径，而名字则为&#8220;SecondExample&#8221;。该名字此时既是解决方案的名字，同时也是该项目的名字。<br />3、用鼠标右键单击项目名，在弹出的对话框中，将Assembly Name命名为SecondExample，将Default Namespace命名为：BruceZhang.com. SecondExample。<br />4、用鼠标右键单击项目名，选择&#8220;Add&#8221;菜单项的&#8220;Add Class&#8221;<br />5、在弹出的对话框中，将文件的名字命名为User.cs<br />6、点击&#8220;Open&#8221;按钮后，项目中就添加了一个新的文件User.cs。打开该文件，将public class User中的内容，修改为前面文中定义好的User类。<br />7、修改原有默认的Program.cs文件名为App.cs，然后将文件内容修改为：<br />&nbsp;class App<br />&nbsp;{<br />&nbsp; /// &lt;summary&gt;<br />&nbsp; /// The main entry point for the application.<br />&nbsp; /// &lt;/summary&gt;<br />&nbsp; [STAThread]<br />&nbsp; static void Main(string[] args)<br />&nbsp; {<br />&nbsp;&nbsp; User user = new User();<br />&nbsp;&nbsp; <br />&nbsp;&nbsp; //用户名和密码均错误；<br />&nbsp;&nbsp; user.Name = "Bruce";<br />&nbsp;&nbsp; user.Password = "test";<br />&nbsp;&nbsp; for (int i=0;i&lt;=4;i++)<br />&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp; user.SignIn();<br />&nbsp;&nbsp; }<br />&nbsp;&nbsp; user.SignOut();<br /><br />&nbsp;&nbsp; //用户名正确，密码错误；<br />&nbsp;&nbsp; user.Name = "admin";<br />&nbsp;&nbsp; user.Password = "test";<br />&nbsp;&nbsp; for (int i=0;i&lt;=4;i++)<br />&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp; user.SignIn();<br />&nbsp;&nbsp; }<br />&nbsp;&nbsp; user.SignOut();<br /><br />&nbsp;&nbsp; //用户名和密码正确；<br />&nbsp;&nbsp; user.Name = "admin";<br />&nbsp;&nbsp; user.Password = "admin";<br />&nbsp;&nbsp; for (int i=0;i&lt;=4;i++)<br />&nbsp;&nbsp; {<br />&nbsp;&nbsp;&nbsp; user.SignIn();<br />&nbsp;&nbsp; }<br />&nbsp;&nbsp; user.SignOut();<br /><br />&nbsp;&nbsp; //注意此时是无法调用这样的字段和方法的；<br />&nbsp;&nbsp; //user.m_name;<br />&nbsp;&nbsp; //user.m_password;<br />&nbsp;&nbsp; //user.IsValid();<br /><br />&nbsp;&nbsp; Console.ReadLine();<br />&nbsp; }<br />&nbsp;}<br />8、运行。</p><img src ="http://www.cnitblog.com/yide/aggbug/78753.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/yide/" target="_blank">青蛙學堂</a> 2012-04-11 14:56 <a href="http://www.cnitblog.com/yide/archive/2012/04/11/78753.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>