﻿<?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>语源科技BlogJava-&lt;span class="style11"&gt;★33°空间‰&lt;/span&gt;</title><link>http://www.blogjava.net/yeiwei/</link><description> &lt;span class="style14"&gt;&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;----&lt;b&gt;&lt;a href="http://www.7color.hb.cn"&gt;&lt;font color=red &gt;★七彩服饰&lt;/font&gt;&amp;nbsp;&amp;nbsp;【最潮拜☆日单精品】【Esprit】【Hotwind】满150包邮-女装-流行女装&lt;/a&gt;&lt;/b&gt; &amp;nbsp;&amp;nbsp;  www.7color.hb.cn&lt;br&gt;
 &lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;----智力比知识重要，素质比智力重要，觉悟比素质更重要 &lt;/span&gt;</description><language>zh-cn</language><lastBuildDate>Tue, 05 May 2026 11:12:04 GMT</lastBuildDate><pubDate>Tue, 05 May 2026 11:12:04 GMT</pubDate><ttl>60</ttl><item><title>我家女儿5月食品表</title><link>http://www.blogjava.net/yeiwei/archive/2010/01/15/309656.html</link><dc:creator>圣域飞侠</dc:creator><author>圣域飞侠</author><pubDate>Fri, 15 Jan 2010 03:21:00 GMT</pubDate><guid>http://www.blogjava.net/yeiwei/archive/2010/01/15/309656.html</guid><wfw:comment>http://www.blogjava.net/yeiwei/comments/309656.html</wfw:comment><comments>http://www.blogjava.net/yeiwei/archive/2010/01/15/309656.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yeiwei/comments/commentRss/309656.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yeiwei/services/trackbacks/309656.html</trackback:ping><description><![CDATA[<a href="http://yexinchen2009.blog.sohu.com/">http://yexinchen2009.blog.sohu.com/</a><br />
必吃： 钙 牛奶 蛋黄 米糊 胡萝卜+黄瓜水<br />
&nbsp;选吃： 鱼汤 绿豆汤&nbsp; 橙子水 苹果泥 香梨+猕猴桃水&nbsp;&nbsp;稀饭&nbsp;<img alt="尴尬" src="http://js3.pp.sohu.com.cn/ppp/images/emotion/base/embarrassed.gif" />&nbsp;<img src ="http://www.blogjava.net/yeiwei/aggbug/309656.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yeiwei/" target="_blank">圣域飞侠</a> 2010-01-15 11:21 <a href="http://www.blogjava.net/yeiwei/archive/2010/01/15/309656.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Asp.net 2.0 中将网站首页生成静态页的一个比较好的方法 </title><link>http://www.blogjava.net/yeiwei/archive/2007/04/11/109966.html</link><dc:creator>圣域飞侠</dc:creator><author>圣域飞侠</author><pubDate>Wed, 11 Apr 2007 09:51:00 GMT</pubDate><guid>http://www.blogjava.net/yeiwei/archive/2007/04/11/109966.html</guid><wfw:comment>http://www.blogjava.net/yeiwei/comments/109966.html</wfw:comment><comments>http://www.blogjava.net/yeiwei/archive/2007/04/11/109966.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yeiwei/comments/commentRss/109966.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yeiwei/services/trackbacks/109966.html</trackback:ping><description><![CDATA[做网站时,有时为了提高性能会将网站首页生成静态页(当然,&nbsp;Asp.net中页面缓存也是一个不错的选择了 <br>将页面生成静态的方法有多中,据不完全统计有N种(N&gt;1) <br>呵呵 <br>以下的方法来自&nbsp;"孟子E&nbsp;"&nbsp;解释的方法 <br><br>代码如下 <br><br>&nbsp;&nbsp;&nbsp;&nbsp;protected&nbsp;override&nbsp;void&nbsp;Render(HtmlTextWriter&nbsp;writer) <br>&nbsp;&nbsp;&nbsp;&nbsp;...{ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.IO.StringWriter&nbsp;html&nbsp;=&nbsp;new&nbsp;System.IO.StringWriter(); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.Web.UI.HtmlTextWriter&nbsp;tw&nbsp;=&nbsp;new&nbsp;HtmlTextWriter(html); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;base.Render(tw); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.IO.StreamWriter&nbsp;sw&nbsp;=&nbsp;new&nbsp;System.IO.StreamWriter(Server.MapPath("index.html"),&nbsp;false,&nbsp;System.Text.Encoding.Default); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sw.Write(html.ToString()); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sw.Close(); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tw.Close(); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Write("页面生成成功!"); <br>&nbsp;&nbsp;&nbsp;&nbsp;} <br>将以上上函数数加如到你要生成静太文件的页面里, <br>函数从载了,Render函数&nbsp;作用是把页面的&nbsp;html文本截下来,保存到文件里, <br>进一步的可以去看一下asp.net页面生命过程. <br><br>&nbsp; <br><font size=3><font color=#ff0000>静态页面的生成&nbsp;</font></font> <br><br>protected&nbsp;override&nbsp;void&nbsp;Render(HtmlTextWriter&nbsp;writer)&nbsp;{ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;StreamWriter&nbsp;r=new&nbsp;StreamWriter(Server.MapPath(StaticFileName), <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;false,System.Text.Encoding.UTF8);&nbsp;&nbsp;//StaticFileName是html文件名 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HtmlTextWriter&nbsp;h=new&nbsp;HtmlTextWriter(r); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;base.Render(h);&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r.Close(); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;h.Close(); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Redirect(StaticFileName); <br>} <br><br>然后在同一aspx的pageLoad事件中判断StaticFileName是否已经存在，如果存在，就应该直接转向，不应该继续生成页面了。<img src ="http://www.blogjava.net/yeiwei/aggbug/109966.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yeiwei/" target="_blank">圣域飞侠</a> 2007-04-11 17:51 <a href="http://www.blogjava.net/yeiwei/archive/2007/04/11/109966.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>生成静态文件的新闻系统核心代码 </title><link>http://www.blogjava.net/yeiwei/archive/2007/04/11/109965.html</link><dc:creator>圣域飞侠</dc:creator><author>圣域飞侠</author><pubDate>Wed, 11 Apr 2007 09:51:00 GMT</pubDate><guid>http://www.blogjava.net/yeiwei/archive/2007/04/11/109965.html</guid><wfw:comment>http://www.blogjava.net/yeiwei/comments/109965.html</wfw:comment><comments>http://www.blogjava.net/yeiwei/archive/2007/04/11/109965.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yeiwei/comments/commentRss/109965.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yeiwei/services/trackbacks/109965.html</trackback:ping><description><![CDATA[<p>在网上看了许多能生成静态页的新闻系统，但基于asp.net的系统极少，闲下时间来自己写了一个，发出来，大家一起研究，代码没做什么优化，只是实现了功能</p>
<p>&nbsp;</p>
<p>using System;<br>using System.Collections;<br>using System.ComponentModel;<br>using System.Data;<br>using System.Data.OleDb;<br>using System.Drawing;<br>using System.Web;<br>using System.Web.SessionState;<br>using System.Web.UI;<br>using System.Web.UI.WebControls;<br>using System.Web.UI.HtmlControls;<br>using System.Configuration;</p>
<p>namespace makehtmlfile<br>{<br>&nbsp;/// &lt;summary&gt;<br>&nbsp;/// makeallfiles 的摘要说明。<br>&nbsp;/// &lt;/summary&gt;<br>&nbsp;public class makeallfiles : System.Web.UI.Page<br>&nbsp;{<br>&nbsp;&nbsp;public string strcon;<br>&nbsp;&nbsp;public OleDbConnection conn;<br>&nbsp;&nbsp;public string strSQL;</p>
<p>&nbsp;&nbsp;private void Page_Load(object sender, System.EventArgs e)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;InitialPages();// 在此处放置用户代码以初始化页面<br>&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;public void InitialPages()<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;strcon&nbsp;&nbsp;&nbsp; = "provider=Microsoft.jet.OLEDB.4.0;data Source="+Server.MapPath(ConfigurationSettings.AppSettings["MDBpath2"])+";";//连接字符窜// 在此处放置用户代码以初始化页面<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strSQL = "select id,class1id,class2id from news order by id desc";<br>&nbsp;&nbsp;&nbsp;MakeAreaForShow(); <br>&nbsp;&nbsp;&nbsp;ReadNewsForWriteFileUserDataReader();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //同过DataReader来读取数据，<br>&nbsp;&nbsp;&nbsp;//ReadNewsForWriteFileUserDataSet();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //将数据直接挂入DataSet中来读取，<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;/// &lt;summary&gt;<br>&nbsp;&nbsp;/// 用来产生循环显示页面的区域，装载生成HTML页的ASPX页面的区域<br>&nbsp;&nbsp;/// &lt;/summary&gt;<br>&nbsp;&nbsp;public void MakeAreaForShow()<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;Response.Write("&lt;span id=showImport&gt;&lt;/span&gt;");<br>&nbsp;&nbsp;&nbsp;Response.Write("&lt;IE:Download ID='oDownload' STYLE='behavior:url(#default#download)'/&gt;");<br>&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;/// &lt;summary&gt;<br>&nbsp;&nbsp;/// 通过DATAREADER来读取数据<br>&nbsp;&nbsp;/// &lt;/summary&gt;<br>&nbsp;&nbsp;public void ReadNewsForWriteFileUserDataReader()<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; num&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 0&nbsp;&nbsp; ;<br>&nbsp;&nbsp;&nbsp;string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; newsid&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; null;<br>&nbsp;&nbsp;&nbsp;string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class1id&nbsp;&nbsp; =&nbsp;&nbsp; null;<br>&nbsp;&nbsp;&nbsp;string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class2id&nbsp;&nbsp; =&nbsp;&nbsp; null;<br>&nbsp;&nbsp;&nbsp;OleDbDataReader&nbsp; dr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; null;<br>&nbsp;&nbsp;&nbsp;OleDbConnection&nbsp; conn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; new OleDbConnection(strcon);<br>&nbsp;&nbsp;&nbsp;conn.Open();<br>&nbsp;&nbsp;&nbsp;OleDbCommand&nbsp;&nbsp;&nbsp;&nbsp; mycommand&nbsp; =&nbsp;&nbsp; new OleDbCommand(strSQL,conn);<br>&nbsp;&nbsp;&nbsp;dr&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; mycommand.ExecuteReader();<br>&nbsp;&nbsp;&nbsp;while(dr.Read())<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;newsid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; dr["id"].ToString();<br>&nbsp;&nbsp;&nbsp;&nbsp;class1id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; dr["class1id"].ToString();<br>&nbsp;&nbsp;&nbsp;&nbsp;class2id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; dr["class2id"].ToString();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;WriteJScript(newsid,class1id,class2id);<br>&nbsp;&nbsp;&nbsp;&nbsp;num++;<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;dr.Close();<br>&nbsp;&nbsp;&nbsp;conn.Close();<br>&nbsp;&nbsp;&nbsp;Response.Write(num.ToString());</p>
<p>&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;/// &lt;summary&gt;<br>&nbsp;&nbsp;/// 通过DATASET来读取数据<br>&nbsp;&nbsp;/// &lt;/summary&gt;<br>&nbsp;&nbsp;public void ReadNewsForWriteFileUserDataSet()<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;DataSet&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ds&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; new DataSet();<br>&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; num&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; 0&nbsp;&nbsp; ;<br>&nbsp;&nbsp;&nbsp;string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; newsid&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; null;<br>&nbsp;&nbsp;&nbsp;string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class1id&nbsp;&nbsp; =&nbsp;&nbsp; null;<br>&nbsp;&nbsp;&nbsp;string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; class2id&nbsp;&nbsp; =&nbsp;&nbsp; null;</p>
<p>&nbsp;&nbsp;&nbsp;OleDbConnection&nbsp; conn&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; new OleDbConnection(strcon);<br>&nbsp;&nbsp;&nbsp;conn.Open();<br>&nbsp;&nbsp;&nbsp;OleDbDataAdapter da&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; new OleDbDataAdapter(strSQL,conn);<br>&nbsp;&nbsp;&nbsp;da.Fill(ds,"news");<br>&nbsp;&nbsp;&nbsp;conn.Close();<br>&nbsp;&nbsp;&nbsp;num&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; ds.Tables["news"].Rows.Count;<br>&nbsp;&nbsp;&nbsp;foreach(DataRow dr in ds.Tables["news"].Rows)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;newsid&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp;&nbsp; dr["id"].ToString();<br>&nbsp;&nbsp;&nbsp;&nbsp;class1id&nbsp;&nbsp; =&nbsp;&nbsp;&nbsp; dr["class1id"].ToString();<br>&nbsp;&nbsp;&nbsp;&nbsp;class2id&nbsp;&nbsp; =&nbsp;&nbsp;&nbsp; dr["class2id"].ToString();<br>&nbsp;&nbsp;&nbsp;&nbsp;WriteJScript(newsid,class1id,class2id);<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;ds = null;<br>&nbsp;&nbsp;&nbsp;Response.Write(num.ToString());<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;public void WriteJScript(string newsid,string class1id,string class2id)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;Response.Write("&lt;script&gt;");<br>&nbsp;&nbsp;&nbsp;Response.Write("function onDownloadDone(downDate)");<br>&nbsp;&nbsp;&nbsp;Response.Write("{");<br>&nbsp;&nbsp;&nbsp;Response.Write("showImport.innerHTML=downDate");<br>&nbsp;&nbsp;&nbsp;Response.Write("}");<br>&nbsp;&nbsp;&nbsp;Response.Write("oDownload.startDownload('makefile2.aspx?id=");<br>&nbsp;&nbsp;&nbsp;Response.Write(newsid);<br>&nbsp;&nbsp;&nbsp;Response.Write("&amp;class1id=");<br>&nbsp;&nbsp;&nbsp;Response.Write(class1id);<br>&nbsp;&nbsp;&nbsp;Response.Write("&amp;class2id=");<br>&nbsp;&nbsp;&nbsp;Response.Write(class2id);<br>&nbsp;&nbsp;&nbsp;Response.Write("',onDownloadDone)");<br>&nbsp;&nbsp;&nbsp;Response.Write("&lt;/script&gt;");<br>&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;</p>
<p>&nbsp;&nbsp;#region Web 窗体设计器生成的代码<br>&nbsp;&nbsp;override protected void OnInit(EventArgs e)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;//<br>&nbsp;&nbsp;&nbsp;// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。<br>&nbsp;&nbsp;&nbsp;//<br>&nbsp;&nbsp;&nbsp;InitializeComponent();<br>&nbsp;&nbsp;&nbsp;base.OnInit(e);<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;/// &lt;summary&gt;<br>&nbsp;&nbsp;/// 设计器支持所需的方法 - 不要使用代码编辑器修改<br>&nbsp;&nbsp;/// 此方法的内容。<br>&nbsp;&nbsp;/// &lt;/summary&gt;<br>&nbsp;&nbsp;private void InitializeComponent()<br>&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;this.Load += new System.EventHandler(this.Page_Load);</p>
<p>&nbsp;&nbsp;}<br>&nbsp;&nbsp;#endregion<br>&nbsp;}<br>}</p>
<p>&nbsp;</p>
<p>using System;<br>using System.Collections;<br>using System.ComponentModel;<br>using System.Data;<br>using System.Configuration;<br>using System.Data.OleDb;<br>using System.Drawing;<br>using System.Web;<br>using System.IO;<br>using System.Web.SessionState;<br>using System.Web.UI;<br>using System.Web.UI.WebControls;<br>using System.Web.UI.HtmlControls;</p>
<p>namespace makehtmlfile<br>{<br>&nbsp;/// &lt;summary&gt;<br>&nbsp;/// makefile2 的摘要说明。<br>&nbsp;/// &lt;/summary&gt;<br>&nbsp;public class makefile2 : System.Web.UI.Page<br>&nbsp;{<br>&nbsp;&nbsp;public string strcon;<br>&nbsp;&nbsp;public OleDbConnection conn;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;public string class1id;<br>&nbsp;&nbsp;public string class2id;<br>&nbsp;&nbsp;//***********************************<br>&nbsp;&nbsp;public string previd;<br>&nbsp;&nbsp;public string prevtitle;<br>&nbsp;&nbsp;public string nextid;<br>&nbsp;&nbsp;public string nexttitle;<br>&nbsp;&nbsp;//***********************************<br>&nbsp;&nbsp;public string newstitle;<br>&nbsp;&nbsp;public string newscontent;<br>&nbsp;&nbsp;public string newsdate;<br>&nbsp;&nbsp;public string newsip;<br>&nbsp;&nbsp;public string newsid;<br>&nbsp;&nbsp;//************************************</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;private void Page_Load(object sender, System.EventArgs e)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;strcon&nbsp;&nbsp;&nbsp; = "provider=Microsoft.jet.OLEDB.4.0;data Source="+Server.MapPath(ConfigurationSettings.AppSettings["MDBpath2"])+";";//连接字符窜// 在此处放置用户代码以初始化页面<br>&nbsp;&nbsp;&nbsp;if(Request.Params["id"]!=null&amp;&amp;Request.Params["class1id"]!=null&amp;&amp;Request.Params["class2id"]!=null)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;InitialPages();</p>
<p>&nbsp;&nbsp;&nbsp;}// 在此处放置用户代码以初始化页面<br>&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;public void InitialPages()<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;strcon&nbsp;&nbsp;&nbsp; = "provider=Microsoft.jet.OLEDB.4.0;data Source="+Server.MapPath(ConfigurationSettings.AppSettings["MDBpath2"])+";";<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;if(Request.Params["id"]!=null)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;newsid&nbsp; = Request.Params["id"].ToString();<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;if(Request.Params["class1id"]!=null)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;class1id&nbsp; = Request.Params["class1id"].ToString();<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;if(Request.Params["class2id"]!=null)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;class2id&nbsp; = Request.Params["class2id"].ToString();<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;ReadDataBase(newsid,class2id);<br>&nbsp;&nbsp;&nbsp;MakeHtmlFile(newsid,class1id,class2id);<br>&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;/// &lt;summary&gt;<br>&nbsp;&nbsp;/// 读写同一分类中，上一篇，和下一篇文章<br>&nbsp;&nbsp;/// &lt;/summary&gt;<br>&nbsp;&nbsp;/// &lt;param name="inputid"&gt; 该文章ID&lt;/param&gt;<br>&nbsp;&nbsp;/// &lt;param name="class2id"&gt;该文章所属分类ID&lt;/param&gt;<br>&nbsp;&nbsp;public void ReadPrevAndNext(string inputid,string class2id)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp;&nbsp; int.Parse(inputid);<br>&nbsp;&nbsp;&nbsp;string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strPrevSQL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp;&nbsp; "select top 1 id,newstitle,newsdate from news where class2id='"+ class2id +"' and id&lt;"+id+" order by id desc";<br>&nbsp;&nbsp;&nbsp;string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strNextSQL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp;&nbsp; "select top 1 id,newstitle,newsdate from news where class2id='"+ class2id +"' and id&gt;"+id+" order by id asc";<br>&nbsp;&nbsp;&nbsp;OleDbDataReader&nbsp;&nbsp; datar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp;&nbsp; null;<br>&nbsp;&nbsp;&nbsp;OleDbConnection con&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = new OleDbConnection(strcon);<br>&nbsp;&nbsp;&nbsp;con.Open();<br>&nbsp;&nbsp;&nbsp;OleDbCommand newcommand&nbsp;&nbsp; = new OleDbCommand(strPrevSQL,con);<br>&nbsp;&nbsp;&nbsp;datar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = newcommand.ExecuteReader();<br>&nbsp;&nbsp;&nbsp;while(datar.Read())<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;previd&nbsp;&nbsp;&nbsp; =&nbsp; datar["id"].ToString();<br>&nbsp;&nbsp;&nbsp;&nbsp;prevtitle =&nbsp; datar["newstitle"].ToString();<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;datar.Close();<br>&nbsp;&nbsp;&nbsp;newcommand.CommandText = strNextSQL ;<br>&nbsp;&nbsp;&nbsp;datar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = newcommand.ExecuteReader();<br>&nbsp;&nbsp;&nbsp;while(datar.Read())<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;nextid&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp; datar["id"].ToString();<br>&nbsp;&nbsp;&nbsp;&nbsp;nexttitle&nbsp; =&nbsp; datar["newstitle"].ToString();<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;con.Close();</p>
<p>&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;/// &lt;summary&gt;<br>&nbsp;&nbsp;/// 将文章信息从库中读出，并将准备生成的HTML文件路径写入库中<br>&nbsp;&nbsp;/// &lt;/summary&gt;<br>&nbsp;&nbsp;/// &lt;param name="inputid"&gt;&lt;/param&gt;<br>&nbsp;&nbsp;/// &lt;param name="class2id"&gt;&lt;/param&gt;<br>&nbsp;&nbsp;public void ReadDataBase(string inputid,string class2id)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;string filename_w = MakeFileName(class1id,class2id,newsid)+".htm";<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;ReadPrevAndNext(inputid,class2id);&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;//读取下一篇和上一篇的信息。</p>
<p><br>&nbsp;&nbsp;&nbsp;OleDbConnection mycon&nbsp; = new OleDbConnection(strcon);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //打开数据库连接<br>&nbsp;&nbsp;&nbsp;mycon.Open();</p>
<p>&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; id&nbsp;&nbsp;&nbsp; = int.Parse(inputid);<br>&nbsp;&nbsp;&nbsp;string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strSQL&nbsp;&nbsp;&nbsp; = "select * from news where id="+id;<br>&nbsp;&nbsp;&nbsp;OleDbDataReader&nbsp; dr&nbsp;&nbsp;&nbsp; = null;<br>&nbsp;&nbsp;&nbsp;OleDbCommand mycommand = new OleDbCommand(strSQL,mycon);<br>&nbsp;&nbsp;&nbsp;dr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = mycommand.ExecuteReader();<br>&nbsp;&nbsp;&nbsp;while(dr.Read())<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;newstitle&nbsp;&nbsp; = dr["newstitle"].ToString();<br>&nbsp;&nbsp;&nbsp;&nbsp;newscontent = dr["newscontent"].ToString();<br>&nbsp;&nbsp;&nbsp;&nbsp;newsdate&nbsp;&nbsp;&nbsp; = dr["newsdate"].ToString();<br>&nbsp;&nbsp;&nbsp;&nbsp;newsip&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = dr["newsip"].ToString();<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;dr.Close();<br>&nbsp;&nbsp;&nbsp;mycommand.CommandText = "update news set url='"+ filename_w +"' where id="+int.Parse(inputid);&nbsp;&nbsp; //将生成的文件路径写入库中,以遍在生成分类页中方便使用<br>&nbsp;&nbsp;&nbsp;mycommand.ExecuteNonQuery();<br>&nbsp;&nbsp;&nbsp;mycon.Close();<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;}</p>
<p><br>&nbsp;&nbsp;/// &lt;summary&gt;<br>&nbsp;&nbsp;/// 生成目标目录和文件，主要用来生成不同分类的目录<br>&nbsp;&nbsp;/// &lt;/summary&gt;<br>&nbsp;&nbsp;/// &lt;param name="inputstr"&gt;&lt;/param&gt;<br>&nbsp;&nbsp;/// &lt;returns&gt;&lt;/returns&gt;<br>&nbsp;&nbsp;public string MakeCatalogName(string class1,string class2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //生成目标目录文件<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;string namestr&nbsp;&nbsp; = "Article";<br>&nbsp;&nbsp;&nbsp;string rootstr&nbsp;&nbsp; = Server.MapPath(".").ToString();<br>&nbsp;&nbsp;&nbsp;string class1str&nbsp; = rootstr + "\\" + namestr + "_" + class1 + "\\";<br>&nbsp;&nbsp;&nbsp;string class2str&nbsp; = rootstr + "\\" + namestr + "_" + class1 + "\\" + namestr + "_" + class2 + "\\";<br>&nbsp;&nbsp;&nbsp;if(!Directory.Exists(class1str))<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;Directory.CreateDirectory(class1str); <br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;if(!Directory.Exists(class2str))<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;Directory.CreateDirectory(class2str); <br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //创建目标文件夹<br>&nbsp;&nbsp;&nbsp;return class2str;<br>&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;/// &lt;summary&gt;<br>&nbsp;&nbsp;/// 根据文章分类和ID生成文件名<br>&nbsp;&nbsp;/// &lt;/summary&gt;<br>&nbsp;&nbsp;/// &lt;param name="class1id"&gt;&lt;/param&gt;<br>&nbsp;&nbsp;/// &lt;param name="class2id"&gt;&lt;/param&gt;<br>&nbsp;&nbsp;/// &lt;param name="nid"&gt;&lt;/param&gt;<br>&nbsp;&nbsp;/// &lt;returns&gt;返回文件名&lt;/returns&gt;<br>&nbsp;&nbsp;public string MakeFileName(string class1,string class2,string id)&nbsp;&nbsp;&nbsp; //生成文件名，能够生成上下篇<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;string myclass2id&nbsp;&nbsp;&nbsp; = class2;<br>&nbsp;&nbsp;&nbsp;string myclass1id&nbsp;&nbsp;&nbsp; = class1;<br>&nbsp;&nbsp;&nbsp;string s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = DateTime.Now.Year.ToString()<br>&nbsp;&nbsp;&nbsp;&nbsp;+DateTime.Now.Month.ToString()<br>&nbsp;&nbsp;&nbsp;&nbsp;+DateTime.Now.Day.ToString()<br>&nbsp;&nbsp;&nbsp;&nbsp;+"_"<br>&nbsp;&nbsp;&nbsp;&nbsp;+myclass1id&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;+"_"<br>&nbsp;&nbsp;&nbsp;&nbsp;+myclass2id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //父类ID<br>&nbsp;&nbsp;&nbsp;&nbsp;+"_"<br>&nbsp;&nbsp;&nbsp;&nbsp;+id;&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; //新闻ID<br>&nbsp;&nbsp;&nbsp;return s;<br>&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;/// &lt;summary&gt;<br>&nbsp;&nbsp;/// 生成HTML文件<br>&nbsp;&nbsp;/// &lt;/summary&gt;<br>&nbsp;&nbsp;/// &lt;param name="nid"&gt;文章ID号&lt;/param&gt;<br>&nbsp;&nbsp;public void MakeHtmlFile(string nid,string cla1id,string cla2id)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //&nbsp; MakeHtmlFile(string nid,string cla1id,string cla2id,string filetemp)&nbsp; 用于区分不同的摸班<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;string file_path&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; Server.MapPath ("template/news_mb.htm");<br>&nbsp;&nbsp;&nbsp;string desfilename&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; MakeFileName(cla1id,cla2id,nid)+".htm";<br>&nbsp;&nbsp;&nbsp;string desfile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; MakeCatalogName(cla1id,cla2id)+MakeFileName(cla1id,cla2id,nid)+".htm";<br>&nbsp;&nbsp;&nbsp;string prevurl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; MakeFileName(cla1id,cla2id,previd)+".htm";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //根据分类和ID生成上下篇的文件连接名<br>&nbsp;&nbsp;&nbsp;string nexturl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; MakeFileName(cla1id,cla2id,nextid)+".htm";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //下篇<br>&nbsp;&nbsp;&nbsp;System.Text.Encoding code&nbsp;&nbsp; =&nbsp;&nbsp; System.Text.Encoding.GetEncoding("gb2312");<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;StreamReader srd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //读<br>&nbsp;&nbsp;&nbsp;StreamWriter swr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; null;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //写<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;string strFile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; null ;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //字符串<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;try<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;srd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; new StreamReader(file_path, code);<br>&nbsp;&nbsp;&nbsp;&nbsp;strFile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =&nbsp;&nbsp; srd.ReadToEnd(); // 读取文件<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;catch(Exception exp)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;HttpContext.Current.Response.Write(exp.Message);<br>&nbsp;&nbsp;&nbsp;&nbsp;HttpContext.Current.Response.End();<br>&nbsp;&nbsp;&nbsp;&nbsp;srd.Close();<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;strFile = strFile.Replace("$title$",newstitle);<br>&nbsp;&nbsp;&nbsp;strFile = strFile.Replace("$content$",newscontent);<br>&nbsp;&nbsp;&nbsp;strFile = strFile.Replace("$date$",newsdate);<br>&nbsp;&nbsp;&nbsp;strFile = strFile.Replace("$ip$",newsip);<br>&nbsp;&nbsp;&nbsp;strFile = strFile.Replace("$prev$",prevtitle);<br>&nbsp;&nbsp;&nbsp;strFile = strFile.Replace("$next$",nexttitle);<br>&nbsp;&nbsp;&nbsp;strFile = strFile.Replace("$prevurl$",prevurl);<br>&nbsp;&nbsp;&nbsp;strFile = strFile.Replace("$nexturl$",nexturl);<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;try<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;swr = new StreamWriter(desfile,false,code);<br>&nbsp;&nbsp;&nbsp;&nbsp;swr.Write(strFile);<br>&nbsp;&nbsp;&nbsp;&nbsp;swr.Flush();<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;catch(Exception ex)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;HttpContext.Current.Response.Write(ex.Message);<br>&nbsp;&nbsp;&nbsp;&nbsp;HttpContext.Current.Response.End();<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;finally<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;swr.Close();<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;if(srd!=null)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;srd.Close();<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;Response.Write(desfilename);</p>
<p>&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;public void Open()<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;if(conn==null)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;conn = new OleDbConnection(strcon);<br>&nbsp;&nbsp;&nbsp;&nbsp;conn.Open();<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;public void Close()<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;if(conn!=null)<br>&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;conn.Close();<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;}</p>
<p>&nbsp;&nbsp;#region Web 窗体设计器生成的代码<br>&nbsp;&nbsp;override protected void OnInit(EventArgs e)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;//<br>&nbsp;&nbsp;&nbsp;// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。<br>&nbsp;&nbsp;&nbsp;//<br>&nbsp;&nbsp;&nbsp;InitializeComponent();<br>&nbsp;&nbsp;&nbsp;base.OnInit(e);<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;/// &lt;summary&gt;<br>&nbsp;&nbsp;/// 设计器支持所需的方法 - 不要使用代码编辑器修改<br>&nbsp;&nbsp;/// 此方法的内容。<br>&nbsp;&nbsp;/// &lt;/summary&gt;<br>&nbsp;&nbsp;private void InitializeComponent()<br>&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;this.Load += new System.EventHandler(this.Page_Load);<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;#endregion<br>&nbsp;}<br>}</p><img src ="http://www.blogjava.net/yeiwei/aggbug/109965.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yeiwei/" target="_blank">圣域飞侠</a> 2007-04-11 17:51 <a href="http://www.blogjava.net/yeiwei/archive/2007/04/11/109965.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ASP.NET生成静态页面实现方法 </title><link>http://www.blogjava.net/yeiwei/archive/2007/04/11/109964.html</link><dc:creator>圣域飞侠</dc:creator><author>圣域飞侠</author><pubDate>Wed, 11 Apr 2007 09:50:00 GMT</pubDate><guid>http://www.blogjava.net/yeiwei/archive/2007/04/11/109964.html</guid><wfw:comment>http://www.blogjava.net/yeiwei/comments/109964.html</wfw:comment><comments>http://www.blogjava.net/yeiwei/archive/2007/04/11/109964.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/yeiwei/comments/commentRss/109964.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yeiwei/services/trackbacks/109964.html</trackback:ping><description><![CDATA[<p>&lt;!--Main.Aspx--&gt;<br>&lt;%@ page language="C#" %&gt;<br>&lt;%@ import namespace=System.IO %&gt;<br>&lt;script runat="server"&gt;<br>protected override void OnInit (EventArgs e)<br>{<br>　 int id;<br>　 try<br>　 {<br>　　　 id = int.Parse (Request.QueryString["id"]);<br>　 }<br>　 catch<br>　 {<br>　　　 throw (new Exception ("页面没有指定id"));<br>　 }<br>　 <br>　 string filename=Server.MapPath("statichtml_"+id+".html");<br>　 <br>　 //尝试读取已有文件<br>　 Stream s = GetFileStream (filename);<br>　 if (s != null)//如果文件存在并且读取成功<br>　 {<br>　　　 using (s)<br>　　　 {<br>　　　　　 Stream2Stream (s, Response.OutputStream);<br>　　　　　 Response.End ();<br>　　　 }<br>　 }<br>　 <br>　 <br>　 //调用Main_Execute,并且获取其输出<br>　 StringWriter sw = new StringWriter ();<br>　 Server.Execute ("Main_Execute.aspx", sw);<br>　 <br>　 string content = sw.ToString ();<br>　 <br>　 //输出到客户端<br>　 Response.Write(content);<br>　 Response.Flush();<br>　 <br>　 //写进文件<br>　 <br>　 try<br>　 {<br>　　　 using (FileStream fs = new FileStream (filename, FileMode.Create, FileAccess.Write, FileShare.Write))<br>　　　 {<br>　　　　　 using (StreamWriter streamwriter = new StreamWriter (fs, Response.ContentEncoding))<br>　　　　　 {<br>　　　　　　　 streamwriter.Write (content);<br>　　　　　 }<br>　　　 }<br>　 }<br>　 finally<br>　 {<br>　　　 //Response.End ();<br>　 }<br>}<br>static public void Stream2Stream (Stream src, Stream dst)<br>{<br>　 byte[] buf = new byte[4096];<br>　 while (true)<br>　 {<br>　　　 int c = src.Read (buf, 0, buf.Length);<br>　　　 if(c==0)<br>　　　　　 return;<br>　　　 dst.Write (buf, 0, c);<br>　 }<br>}<br>public Stream GetFileStream(string filename)<br>{<br>　 try<br>　 {<br>　　　 DateTime dt = File.GetLastWriteTime (filename);<br>　　　 TimeSpan ts=dt - DateTime.Now;<br>　　　 if(ts.TotalHours&gt;1)<br>　　　　　 return null;　　　 //1小时后过期<br>　　　 return new FileStream (filename, FileMode.Open, FileAccess.Read, FileShare.Read);<br>　 }<br>　 catch<br>　 {<br>　　　 return null;<br>　 }<br>}<br>&lt;/script&gt;</p>
<p><br>&lt;!--Main_Execute.aspx--&gt;<br>&lt;%@ page language="C#" %&gt;<br>&lt;html&gt;<br>&lt;head runat="server"&gt;<br>　 &lt;title&gt;Untitled Page&lt;/title&gt;<br>&lt;/head&gt;<br>&lt;body&gt;</p>
<p>ID:<br>&lt;%=Request.QueryString["id"]%&gt;</p>
<p>&lt;/body&gt;<br>&lt;/html&gt;</p>
<p>&nbsp;</p>
<p><br>其中原理是这样的.<br>Main_Execute.aspx是生成HTML的页面.</p>
<p>现在用Main.aspx来对它进行缓存.<br>过程如下:</p>
<p>首先根据页面参数算出文件名.(这个例子只根据Request.QueryString["id"]来算)<br>尝试读取缓存的文件.如果成功,那么Response.End();<br>如果不成功:<br>使用Server.Execute来调用Main_Execute.aspx,并且获取它的结果内容.<br>得到内容后,立刻输出到客户端.<br>最后把内容写进文件里,提供给下一次做为缓存度取.&nbsp;</p><img src ="http://www.blogjava.net/yeiwei/aggbug/109964.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yeiwei/" target="_blank">圣域飞侠</a> 2007-04-11 17:50 <a href="http://www.blogjava.net/yeiwei/archive/2007/04/11/109964.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Orcas中C#语言的新特性：自动属性，对象初始化器，和集合初始化器 </title><link>http://www.blogjava.net/yeiwei/archive/2007/04/11/109963.html</link><dc:creator>圣域飞侠</dc:creator><author>圣域飞侠</author><pubDate>Wed, 11 Apr 2007 09:47:00 GMT</pubDate><guid>http://www.blogjava.net/yeiwei/archive/2007/04/11/109963.html</guid><wfw:comment>http://www.blogjava.net/yeiwei/comments/109963.html</wfw:comment><comments>http://www.blogjava.net/yeiwei/archive/2007/04/11/109963.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yeiwei/comments/commentRss/109963.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yeiwei/services/trackbacks/109963.html</trackback:ping><description><![CDATA[<p>上个星期，我们发布了我们的Visual Studio和.NET框架Orcas版<a href="http://msdn2.microsoft.com/en-us/vstudio/aa700831.aspx" target=_blank><u><font color=#6fbc4c>三月份的CTP</font></u></a>，这是个谁都可以下的免费下载，同时提供VPC镜像(允许你在一个虚拟机里运行它)以及单独的安装文件(注：如果你在运行Vista的话，你要确认你只使用VPC版本)。你可以在<a href="http://msdn2.microsoft.com/en-us/vstudio/aa700831.aspx" target=_blank><u><font color=#6fbc4c>这里</font></u></a>下载。 </p>
<p>几个星期前，我曾在博客上讨论过Orcas中针对ASP.NET开发人员的<a href="http://blog.joycode.com/scottgu/archive/2007/02/10/93432.aspx" target=_blank><u><font color=#6fbc4c>一些重大的改进</font></u></a>。如果你还没有读过这个贴子的话，我强烈建议你<a href="http://blog.joycode.com/scottgu/archive/2007/02/10/93432.aspx" target=_blank><u><font color=#6fbc4c>在这里读一下</font></u></a>。我认为你会非常喜欢该帖子讨论的新特性的。 </p>
<p>除了那些框架和工具类的精彩新特性外，我认为开发人员(包括所有的.NET应用类型的开发人员)会非常喜爱Orcas的一件事情是，VB和C#将包含一些新语言特性和改进。这些语言改动将以既微妙又深刻的方式改进我们的开发体验，势将改进效率，减小我们需要键入的代码量。 </p>
<p>在下几个星期里，我将试着在博客里讨论几个这些语言的改进之处，示范如何把它们使用在一起，来产生一些非常强有力的结果。</p>
<p><strong>新的C#语言特性：自动属性(Automatic Properties)</strong></p>
<p>如果你现在是C#开发人员的话，你大概非常习惯编写象下面这个代码片段一样带有基本属性的类型：</p>
<p>&nbsp;</p>
<div style="BORDER-RIGHT: white 2px ridge; PADDING-RIGHT: 10px; BORDER-TOP: white 2px ridge; PADDING-LEFT: 10px; FONT-SIZE: 10pt; PADDING-BOTTOM: 10px; MARGIN: 10px; BORDER-LEFT: white 2px ridge; PADDING-TOP: 10px; BORDER-BOTTOM: white 2px ridge; FONT-FAMILY: courier new; BACKGROUND-COLOR: #eeeeee; WORD-WRAP: break-word">&nbsp;&nbsp;&nbsp;&nbsp;<font color=#0000ff>public&nbsp;class&nbsp;</font><font color=#000000>Person&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>private&nbsp;string&nbsp;</font><font color=#000000>_firstName</font><font color=#0000ff>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;string&nbsp;</font><font color=#000000>_lastName</font><font color=#0000ff>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;int&nbsp;</font><font color=#000000>_age</font><font color=#0000ff>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;string&nbsp;</font><font color=#000000>FirstName&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>get&nbsp;</font><font color=#000000>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>return&nbsp;</font><font color=#000000>_firstName</font><font color=#0000ff>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#000000>}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>set&nbsp;</font><font color=#000000>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_firstName&nbsp;</font><font color=#0000ff>=&nbsp;value;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#000000>}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>public&nbsp;string&nbsp;</font><font color=#000000>LastName&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>get&nbsp;</font><font color=#000000>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>return&nbsp;</font><font color=#000000>_lastName</font><font color=#0000ff>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#000000>}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>set&nbsp;</font><font color=#000000>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_lastName&nbsp;</font><font color=#0000ff>=&nbsp;value;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#000000>}<br>&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;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>public&nbsp;int&nbsp;</font><font color=#000000>Age&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>get&nbsp;</font><font color=#000000>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>return&nbsp;</font><font color=#000000>_age</font><font color=#0000ff>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#000000>}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>set&nbsp;</font><font color=#000000>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_age&nbsp;</font><font color=#0000ff>=&nbsp;value;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#000000>}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}</font> </div>
<p>&nbsp;</p>
<p>注意，我们在属性的geter/setter中实际上并没有添加什么逻辑，我们只是将get/set实施到了一个成员变量。我们不禁要问这样一个问题：为什么不直接使用成员变量而使用属性呢？这是因为，向外面呈现公开的成员变量有很多不好的地方。二个最大的问题是：1) 你无法轻易地对成员变量做数据绑定，2) 如果你从类中向外呈现成员变量的话，之后，你不重新编译那些引用老的类的任何程序集，就无法将它们改成属性(譬如，要添加验证逻辑到setter里)。 </p>
<p>Orcas中发布的新C#编译器通过一个叫&#8220;自动属性(automatic properties)&#8221;的语言特性提供了一个优雅的方式来使得你的编码更加简洁，同时还保持属性的灵活性。自动属性允许你避免手工声明一个私有成员变量以及编写get/set逻辑，取而代之的是，编译器会自动为你生成一个私有变量和默认的get/set 操作。</p>
<p>譬如，使用自动属性，我现在可以将上面的代码改写成：</p>
<p>&nbsp;</p>
<div style="BORDER-RIGHT: white 2px ridge; PADDING-RIGHT: 10px; BORDER-TOP: white 2px ridge; PADDING-LEFT: 10px; FONT-SIZE: 10pt; PADDING-BOTTOM: 10px; MARGIN: 10px; BORDER-LEFT: white 2px ridge; PADDING-TOP: 10px; BORDER-BOTTOM: white 2px ridge; FONT-FAMILY: courier new; BACKGROUND-COLOR: #eeeeee; WORD-WRAP: break-word">&nbsp;&nbsp;&nbsp;&nbsp;<font color=#0000ff>public&nbsp;class&nbsp;</font><font color=#000000>Person&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>public&nbsp;string&nbsp;</font><font color=#000000>FirstName&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>get;&nbsp;set;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#000000>}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>public&nbsp;string&nbsp;</font><font color=#000000>LastName&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>get;&nbsp;set;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#000000>}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>public&nbsp;int&nbsp;</font><font color=#000000>Age&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>get;&nbsp;set;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#000000>}<br>&nbsp;&nbsp;&nbsp;&nbsp;}</font> </div>
<p>&nbsp;</p>
<p>或者，我想更简明的话，我可以将空白的地方做进一步压缩，象这样： </p>
<p>&nbsp;</p>
<div style="BORDER-RIGHT: white 2px ridge; PADDING-RIGHT: 10px; BORDER-TOP: white 2px ridge; PADDING-LEFT: 10px; FONT-SIZE: 10pt; PADDING-BOTTOM: 10px; MARGIN: 10px; BORDER-LEFT: white 2px ridge; PADDING-TOP: 10px; BORDER-BOTTOM: white 2px ridge; FONT-FAMILY: courier new; BACKGROUND-COLOR: #eeeeee; WORD-WRAP: break-word">&nbsp;&nbsp;&nbsp;&nbsp;<font color=#0000ff>public&nbsp;class&nbsp;</font><font color=#000000>Person&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>public&nbsp;string&nbsp;</font><font color=#000000>FirstName&nbsp;{&nbsp;</font><font color=#0000ff>get;&nbsp;set;&nbsp;</font><font color=#000000>}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>public&nbsp;string&nbsp;</font><font color=#000000>LastName&nbsp; {&nbsp;</font><font color=#0000ff>get;&nbsp;set;&nbsp;</font><font color=#000000>}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>public&nbsp;int&nbsp;&nbsp;&nbsp; </font><font color=#000000>Age&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;</font><font color=#0000ff>get;&nbsp;set;&nbsp;</font><font color=#000000>}<br>&nbsp;&nbsp;&nbsp;&nbsp;}</font> </div>
<p>&nbsp;</p>
<p>当Orcas版中的C#编译器遇上象上面这样的空的get/set属性的话，它会自动为你在类中生成一个私有成员变量，对这个变量实现一个公开的getter 和setter。这么做的好处是，从类-合同(type-contract)的角度来看，这个类跟我们上面第一个有点冗长的实现看上去完全一样，这意味着，不象公开的成员变量，在将来，我可以在我的属性setter实现中添加验证逻辑，而不用对引用我的类的任何外部组件做改动。</p>
<p><a href="http://community.bartdesmet.net/blogs/" target=_blank><u><font color=#6fbc4c>Bart De Smet</font></u></a>对使用Orcas三月份CTP版中的自动属性时内部发生的情形作了精彩的描述，你可以<a href="http://community.bartdesmet.net/blogs/bart/archive/2007/03/03/c-3-0-automatic-properties-explained.aspx" target=_blank><u><font color=#6fbc4c>在这里阅读他的精彩相关帖子</font></u></a>。 </p>
<p><strong>C#和VB语言的新特性：对象初始化器(Object Initializers)</strong></p>
<p>.NET框架中的类型非常依赖于属性的使用。当生成对象实例和使用新的类型时，写出象下面这样的编码是非常常见的情形：</p>
<p>&nbsp;</p>
<div style="BORDER-RIGHT: white 2px ridge; PADDING-RIGHT: 10px; BORDER-TOP: white 2px ridge; PADDING-LEFT: 10px; FONT-SIZE: 10pt; PADDING-BOTTOM: 10px; MARGIN: 10px; BORDER-LEFT: white 2px ridge; PADDING-TOP: 10px; BORDER-BOTTOM: white 2px ridge; FONT-FAMILY: courier new; BACKGROUND-COLOR: #eeeeee; WORD-WRAP: break-word">&nbsp;&nbsp;&nbsp;<font color=#000000>Person&nbsp;person&nbsp;</font><font color=#0000ff>=&nbsp;new&nbsp;</font><font color=#000000>Person()</font><font color=#0000ff>;<br>&nbsp;&nbsp;&nbsp;</font><font color=#000000>person.FirstName&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#808080>"Scott"</font><font color=#0000ff>;<br>&nbsp;&nbsp;&nbsp;</font><font color=#000000>person.LastName&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#808080>"Guthrie"</font><font color=#0000ff>;<br>&nbsp;&nbsp;&nbsp;</font><font color=#000000>person.Age&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#800000>32</font><font color=#0000ff>;</font> </div>
<p>&nbsp;</p>
<p>你有没有想要把这样的编码简化过(也许将其安排在一行上)？使用Orcas中的C#和VB语言编译器的话，你现在可以利用一个称为&#8220;对象初始化器(object Initializers)&#8221;的&#8220;语法甜头(syntactic sugar)&#8221;语言特性来做些简化，将上述代码重写为：</p>
<p>&nbsp;</p>
<div style="BORDER-RIGHT: white 2px ridge; PADDING-RIGHT: 10px; BORDER-TOP: white 2px ridge; PADDING-LEFT: 10px; FONT-SIZE: 10pt; PADDING-BOTTOM: 10px; MARGIN: 10px; BORDER-LEFT: white 2px ridge; PADDING-TOP: 10px; BORDER-BOTTOM: white 2px ridge; FONT-FAMILY: courier new; BACKGROUND-COLOR: #eeeeee; WORD-WRAP: break-word">&nbsp;&nbsp;<font color=#000000>Person&nbsp;person&nbsp;</font><font color=#0000ff>=&nbsp;new&nbsp;</font><font color=#000000>Person&nbsp;{&nbsp;FirstName</font><font color=#0000ff>=</font><font color=#808080>"Scott"</font><font color=#000000>,&nbsp;LastName</font><font color=#0000ff>=</font><font color=#808080>"Guthrie"</font><font color=#000000>,&nbsp;Age</font><font color=#0000ff>=</font><font color=#800000>32&nbsp;</font><font color=#000000>}</font><font color=#0000ff>;</font> </div>
<p>&nbsp;</p>
<p>然后，编译器就会自动地生成合适的属性setter代码，保持跟前面较冗长的代码例子同样的语意。</p>
<p>除了在初始化类时设置简单的属性值外，对象初始化器特性也允许我们设置更复杂的嵌套(nested)属性类型。譬如，假如我们在上面定义的每个Person类型也拥有一个属于Address类型的叫&#8220;Address&#8221;的属性。我们可以编写下面这样的代码来生成一个新的Person对象，同时设置它的属性，象这样： </p>
<p>&nbsp;</p>
<div style="BORDER-RIGHT: white 2px ridge; PADDING-RIGHT: 10px; BORDER-TOP: white 2px ridge; PADDING-LEFT: 10px; FONT-SIZE: 10pt; PADDING-BOTTOM: 10px; MARGIN: 10px; BORDER-LEFT: white 2px ridge; PADDING-TOP: 10px; BORDER-BOTTOM: white 2px ridge; FONT-FAMILY: courier new; BACKGROUND-COLOR: #eeeeee; WORD-WRAP: break-word">&nbsp;&nbsp;&nbsp;<font color=#000000>Person&nbsp;person&nbsp;</font><font color=#0000ff>=&nbsp;new&nbsp;</font><font color=#000000>Person&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FirstName&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#808080>"Scott"</font><font color=#000000>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LastName&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#808080>"Guthrie"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#000000>Age&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#800000>32</font><font color=#000000>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Address&nbsp;</font><font color=#0000ff>=&nbsp;new&nbsp;</font><font color=#000000>Address&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Street&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#808080>"One&nbsp;Microsoft&nbsp;Way"</font><font color=#000000>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;City&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#808080>"Redmond"</font><font color=#000000>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;State&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#808080>"WA"</font><font color=#000000>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Zip&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#800000>98052<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#000000>}<br>&nbsp;&nbsp;&nbsp;}</font><font color=#0000ff>;</font> </div>
<p>&nbsp;</p>
<p><a href="http://community.bartdesmet.net/blogs/" target=_blank><u><font color=#6fbc4c>Bart De Smet</font></u></a>对使用Orcas三月份CTP版中的对象初始化器时内部发生的情形也作了精彩的描述，你可以<a href="http://community.bartdesmet.net/blogs/bart/archive/2006/12/04/C_2300_-3.0-Feature-Focus-_2D00_-Part-2-_2D00_-Object-Initializers.aspx" target=_blank><u><font color=#6fbc4c>在这里阅读他的精彩相关帖子</font></u></a>。 </p>
<p><strong>C#和VB语言的新特性：集合初始化器(Collection Initializers)</strong></p>
<p>对象初始化器很棒，它极大地简化了把对象添加到集合的做法。譬如，假如我要把三个人加到一个基于泛型的类型为Person的List集合中去的话，我可以写下面这样的编码：</p>
<p>&nbsp;</p>
<div style="BORDER-RIGHT: white 2px ridge; PADDING-RIGHT: 10px; BORDER-TOP: white 2px ridge; PADDING-LEFT: 10px; FONT-SIZE: 10pt; PADDING-BOTTOM: 10px; MARGIN: 10px; BORDER-LEFT: white 2px ridge; PADDING-TOP: 10px; BORDER-BOTTOM: white 2px ridge; FONT-FAMILY: courier new; BACKGROUND-COLOR: #eeeeee; WORD-WRAP: break-word">&nbsp;&nbsp;<font color=#000000>List&lt;Person&gt;&nbsp;people&nbsp;</font><font color=#0000ff>=&nbsp;new&nbsp;</font><font color=#000000>List&lt;Person&gt;()</font><font color=#0000ff>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;</font><font color=#000000>people.Add(&nbsp;</font><font color=#0000ff>new&nbsp;</font><font color=#000000>Person&nbsp;{&nbsp;FirstName&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#808080>"Scott"</font><font color=#000000>,&nbsp;LastName&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#808080>"Guthrie"</font><font color=#000000>,&nbsp;Age&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#800000>32&nbsp;</font><font color=#000000>}&nbsp;)</font><font color=#0000ff>;<br>&nbsp;&nbsp;</font><font color=#000000>people.Add(&nbsp;</font><font color=#0000ff>new&nbsp;</font><font color=#000000>Person&nbsp;{&nbsp;FirstName&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#808080>"Bill"</font><font color=#000000>,&nbsp;LastName&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#808080>"Gates"</font><font color=#000000>,&nbsp;Age&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#800000>50&nbsp;</font><font color=#000000>}&nbsp;)</font><font color=#0000ff>;<br>&nbsp;&nbsp;</font><font color=#000000>people.Add(&nbsp;</font><font color=#0000ff>new&nbsp;</font><font color=#000000>Person&nbsp;{&nbsp;FirstName&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#808080>"Susanne"</font><font color=#000000>,&nbsp;LastName&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#808080>"Guthrie"</font><font color=#000000>,&nbsp;Age&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#800000>32&nbsp;</font><font color=#000000>}&nbsp;)</font><font color=#0000ff>;<br>&nbsp;</font> </div>
<p>&nbsp;</p>
<p>对这个例子，跟我使用C# 2.0编译器要输入的代码相比，单独使用新的对象初始化器特性就能省去12行额外的代码。</p>
<p>但Orcas版中的C#和VB编译器允许我们更进一步，现在同时支持&#8220;集合初始化器(collection initializers)&#8221;，这允许我们避免要写多个Add语句，省下更多的键盘操作：</p>
<p>&nbsp;</p>
<div style="BORDER-RIGHT: white 2px ridge; PADDING-RIGHT: 10px; BORDER-TOP: white 2px ridge; PADDING-LEFT: 10px; FONT-SIZE: 10pt; PADDING-BOTTOM: 10px; MARGIN: 10px; BORDER-LEFT: white 2px ridge; PADDING-TOP: 10px; BORDER-BOTTOM: white 2px ridge; FONT-FAMILY: courier new; BACKGROUND-COLOR: #eeeeee; WORD-WRAP: break-word">&nbsp;&nbsp;&nbsp;<font color=#000000>List&lt;Person&gt;&nbsp;people&nbsp;</font><font color=#0000ff>=&nbsp;new&nbsp;</font><font color=#000000>List&lt;Person&gt;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>new&nbsp;</font><font color=#000000>Person&nbsp;{&nbsp;FirstName&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#808080>"Scott"</font><font color=#000000>,&nbsp;LastName&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#808080>"Guthrie"</font><font color=#000000>,&nbsp;Age&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#800000>32&nbsp;</font><font color=#000000>},<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>new&nbsp;</font><font color=#000000>Person&nbsp;{&nbsp;FirstName&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#808080>"Bill"</font><font color=#000000>,&nbsp;LastName&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#808080>"Gates"</font><font color=#000000>,&nbsp;Age&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#800000>50&nbsp;</font><font color=#000000>},<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>new&nbsp;</font><font color=#000000>Person&nbsp;{&nbsp;FirstName&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#808080>"Susanne"</font><font color=#000000>,&nbsp;LastName&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#808080>"Guthrie"</font><font color=#000000>,&nbsp;Age&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#800000>32&nbsp;</font><font color=#000000>}<br>&nbsp;&nbsp;&nbsp;}</font><font color=#0000ff>;</font> </div>
<p>&nbsp;</p>
<p>当编译器遇上上面这样的句法时，它会自动为我们生成象前面的例子一样的集合插入编码。</p>
<p><strong>结语</strong> </p>
<p>作为开发人员，我们现在拥有了简明得多的方式来定义对象，对它们初始化，将它们加入集合内。在运行时，其语意，跟今天的较长的版本的语意，是完全一样的（所以你不必担心行为会改变）。但现在你不需输入那么多字符了，你的代码将既干净又简明。 </p>
<p>在不远的将来，我将发表更多的博客贴子来讨论Orcas版中更多的语言上的改进，包括扩展方法（Extension Methods），Lambdas和匿名类。然后，我将对LINQ做深入讨论，示范它是如何利用所有这些特性来提供一个非常优雅的方式来查询和与数据交互的。</p><img src ="http://www.blogjava.net/yeiwei/aggbug/109963.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yeiwei/" target="_blank">圣域飞侠</a> 2007-04-11 17:47 <a href="http://www.blogjava.net/yeiwei/archive/2007/04/11/109963.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> .NET 3.0 资源列表 </title><link>http://www.blogjava.net/yeiwei/archive/2007/04/11/109962.html</link><dc:creator>圣域飞侠</dc:creator><author>圣域飞侠</author><pubDate>Wed, 11 Apr 2007 09:46:00 GMT</pubDate><guid>http://www.blogjava.net/yeiwei/archive/2007/04/11/109962.html</guid><wfw:comment>http://www.blogjava.net/yeiwei/comments/109962.html</wfw:comment><comments>http://www.blogjava.net/yeiwei/archive/2007/04/11/109962.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/yeiwei/comments/commentRss/109962.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yeiwei/services/trackbacks/109962.html</trackback:ping><description><![CDATA[<p><span style="COLOR: blue"><strong>.NET 3.0 - Full</strong></span><br><br><strong>Videos</strong><br><a title=http://www.microsoft.com/emea/msdnshowtime/sessionh.aspx?videoid=258 href="http://www.microsoft.com/emea/msdnshowtime/sessionh.aspx?videoid=258" target=_blank><u><font color=#6fbc4c>WinFX (.NET 3.0) - Windows Presentation Foundation (WPF), InfoCard (Windows CardSpace) &amp; Windows Communication Foundation (WCF)</font></u></a><br><br><strong>Training</strong> </p>
<ul class=ubb-list>
    <li><a title=http://www.netfxguide.com/default.aspx?Node=1%2f6&amp;TopicID=6&amp;Topic=WCF href="http://www.netfxguide.com/default.aspx?Node=1%2f6&amp;TopicID=6&amp;Topic=WCF" target=_blank><u><font color=#6fbc4c>NETFXGuide</font></u></a>
    <li><strong>Free Vista / .NET 3.0 E-Learning: </strong>All courses listed <a title=http://www.microsoft.com/learning/windowsvista/dev/default.mspx href="http://www.microsoft.com/learning/windowsvista/dev/default.mspx" target=_blank><u><font color=#6fbc4c>here</font></u></a>
    <li><strong>See the New Capabilities: Microsoft .NET Framework 3.0 and Visual Studio 2005: </strong>Learn about Windows Presentation Foundation and more new capabilities provided by the .NET Framework 3.0. Free collection from Microsoft Learning. Click <a title=https://www.microsoftelearning.com/eLearning/gotoResource.aspx?resourceid=%7b54B8ECBE-B85C-402F-B1E2-A1E0217310C1%7d&amp;locale=en-US href="https://www.microsoftelearning.com/eLearning/gotoResource.aspx?resourceid=%7b54B8ECBE-B85C-402F-B1E2-A1E0217310C1%7d&amp;locale=en-US" target=_blank><u><font color=#6fbc4c>here</font></u></a> or <a title=http://go.microsoft.com/?linkid=5577967 href="http://go.microsoft.com/?linkid=5577967" target=_blank><u><font color=#6fbc4c>here</font></u></a>.<br>
    <li><strong>Get Started With Windows Workflow Foundation: </strong>Free clinic from Microsoft Learning: See the functionality and architecture of Windows Workflow Foundation, and learn how to use it with Visual Studio 2005 to build workflow-enabled applications. Click <a title=https://www.microsoftelearning.com/eLearning/gotoResource.aspx?resourceid=%7bC669EE14-A3D5-4F6F-8843-2797C82D7909%7d&amp;locale=en-US href="https://www.microsoftelearning.com/eLearning/gotoResource.aspx?resourceid=%7bC669EE14-A3D5-4F6F-8843-2797C82D7909%7d&amp;locale=en-US" target=_blank><u><font color=#6fbc4c>here</font></u></a>.
    <li><strong>Introduction to Developing with Windows Communication Foundation and Visual Studio 2005: </strong>Free clinic from Microsoft Learning: Learn how to create Windows Communication Foundation (WCF) services and clients, and enhance WCF services. Click <a title=https:/www.microsoftelearning.com/eLearning/gotoResource.aspx?resourceid=%7b94D1CAA8-F853-4570-A744-4DD421603C98%7d&amp;locale=en-US href="https:/www.microsoftelearning.com/eLearning/gotoResource.aspx?resourceid=%7b94D1CAA8-F853-4570-A744-4DD421603C98%7d&amp;locale=en-US" target=_blank><u><font color=#6fbc4c>here</font></u></a>.
    <li>.NET University <a title=http://www.dotnet-u.com/courseware/NetULabs.zip href="http://www.dotnet-u.com/courseware/NetULabs.zip" target=_blank><u><font color=#6fbc4c>Hands on Labs</font></u></a>
    <li><a title=http://www.dotnet-u.com/schedule.aspx href="http://www.dotnet-u.com/schedule.aspx" target=_blank><u><font color=#6fbc4c>.NET University schedule</font></u></a> </li>
</ul>
<p><br><br><span style="COLOR: blue"><strong>WPF</strong></span><br><br><strong>WPF Blogs</strong> </p>
<ul class=ubb-list>
    <li><a title=http://www.thewpfblog.com/ href="http://www.thewpfblog.com/" target=_blank><u><font color=#6fbc4c>The WPF Blog</font></u></a>
    <li><a title=http://wpf.netfx3.com/blogs/wpf_community_bloggers/archive/tags/Video/default.aspx href="http://wpf.netfx3.com/blogs/wpf_community_bloggers/archive/tags/Video/default.aspx" target=_blank><u><font color=#6fbc4c>WPF Community Blog</font></u></a>
    <li><a title=http://blogs.msdn.com/expression/articles/543834.aspx href="http://blogs.msdn.com/expression/articles/543834.aspx" target=_blank><u><font color=#6fbc4c>Expression Team Blog</font></u></a>
    <li><a title=http://blogs.msdn.com/richard_bailey/ href="http://blogs.msdn.com/richard_bailey/" target=_blank><u><font color=#6fbc4c>WPF Visual Designer</font></u></a>
    <li><a title=http://blogs.msdn.com/nikola/ href="http://blogs.msdn.com/nikola/" target=_blank><u><font color=#6fbc4c>XAML Only</font></u></a>
    <li><a title=http://blogs.msdn.com/karstenj/archive/2006/06/15/632639.aspx href="http://blogs.msdn.com/karstenj/archive/2006/06/15/632639.aspx" target=_blank><u><font color=#6fbc4c>Karsten Januszewski</font></u></a> </li>
</ul>
<p><strong>WPF Whitepapers</strong> </p>
<ul class=ubb-list>
    <li><a title=http://blogs.msdn.com/jfoscoding/articles/765135.aspx href="http://blogs.msdn.com/jfoscoding/articles/765135.aspx" target=_blank><u><font color=#6fbc4c>WPF for Windows Developers</font></u></a>
    <li><a title=http://windowssdk.msdn.microsoft.com/en-us/ms746927(VS.80).aspx href="http://windowssdk.msdn.microsoft.com/en-us/ms746927(VS.80).aspx" target=_blank><u><font color=#6fbc4c>Fundamentals</font></u></a>, <a title=http://windowssdk.msdn.microsoft.com/en-us/ms753313(VS.80).aspx href="http://windowssdk.msdn.microsoft.com/en-us/ms753313(VS.80).aspx" target=_blank><u><font color=#6fbc4c>Data</font></u></a>
    <li><a title=http://windowssdk.msdn.microsoft.com/en-us/ms752061(VS.80).aspx href="http://windowssdk.msdn.microsoft.com/en-us/ms752061(VS.80).aspx" target=_blank><u><font color=#6fbc4c>Graphics and Media</font></u></a> </li>
</ul>
<p><strong>WPF Videos</strong> </p>
<ul class=ubb-list>
    <li><a title=http://on10.net/Blogs/tina/3392/ href="http://on10.net/Blogs/tina/3392/" target=_blank><u><font color=#6fbc4c>NY Times Reader demo</font></u></a> Karsten <a title=http://channel9.msdn.com/Showpost.aspx?postid=170670 href="http://channel9.msdn.com/Showpost.aspx?postid=170670" target=_blank><u><font color=#6fbc4c>Januszewski, a technical evangelist focusing on WPF</font></u></a><br>
    <li><a title=http://www.microsoft.com/products/expression/en/interactive_designer/demos.mspx href="http://www.microsoft.com/products/expression/en/interactive_designer/demos.mspx" target=_blank><u><font color=#6fbc4c>Designer Demos</font></u></a>
    <li><a title=http://channel9.msdn.com/Showpost.aspx?postid=202329 href="http://channel9.msdn.com/Showpost.aspx?postid=202329" target=_blank><u><font color=#6fbc4c>Developer/Designer Workflow in WPF</font></u></a> </li>
</ul>
<p><strong>WPF Presentations</strong><br>.NET University <a title=http://www.dotnet-u.com/courseware/WPFIntro.zip href="http://www.dotnet-u.com/courseware/WPFIntro.zip" target=_blank><u><font color=#6fbc4c>Windows Presentation Foundation PPTs</font></u></a><br><br><strong>WPF Training</strong> </p>
<ul class=ubb-list>
    <li><a title=https://www.microsoftelearning.com/eLearning/gotoResource.aspx?resourceid=%7bB4F24065-32BD-4D86-A3B7-0BE2DFB74C35%7d&amp;locale=en-US href="https://www.microsoftelearning.com/eLearning/gotoResource.aspx?resourceid=%7bB4F24065-32BD-4D86-A3B7-0BE2DFB74C35%7d&amp;locale=en-US" target=_blank><strong><u><font color=#6fbc4c>Clinic 5135 AE: Introduction to Developing with Windows Presentation Foundation and Visual Studio 2005</font></u></strong></a>
    <li>Excerpted Invaluable 5 day course from <a title=http://blogs.msdn.com/karstenj/archive/2006/06/15/632639.aspx href="http://blogs.msdn.com/karstenj/archive/2006/06/15/632639.aspx" target=_blank><u><font color=#6fbc4c>Karsten Januszewski blog</font></u></a><span style="COLOR: #0000ff"> post:</span>
    <li>1.<a title=http://sessions.mix06.com/display_detail.asp?sessionChoice=2001&amp;disc=&amp;pid=NGW030&amp;year=2005 href="http://sessions.mix06.com/display_detail.asp?sessionChoice=2001&amp;disc=&amp;pid=NGW030&amp;year=2005" target=_blank><u><font color=#6fbc4c>Watch Developing a WPF Application</font></u></a>
    <li>2.<a title=http://sessions.mix06.com/view.asp?sessionChoice=2001&amp;disc=&amp;pid=NGW008&amp;yearChoice=2005 href="http://sessions.mix06.com/view.asp?sessionChoice=2001&amp;disc=&amp;pid=NGW008&amp;yearChoice=2005" target=_blank><u><font color=#6fbc4c>Michael Wallent's presentation from MIX</font></u></a>.
    <li>3.<a title=http://sessions.mix06.com/display_detail.asp?sessionChoice=2001&amp;disc=&amp;pid=NGW040&amp;year=2005 href="http://sessions.mix06.com/display_detail.asp?sessionChoice=2001&amp;disc=&amp;pid=NGW040&amp;year=2005" target=_blank><u><font color=#6fbc4c>Watch A Designer's Overview of WPF</font></u></a>
    <li>4.<a title=http://sessions.mix06.com/display_detail.asp?sessionChoice=2001&amp;disc=&amp;pid=NGW032&amp;year=2005 href="http://sessions.mix06.com/display_detail.asp?sessionChoice=2001&amp;disc=&amp;pid=NGW032&amp;year=2005" target=_blank><u><font color=#6fbc4c>Introducing Microsoft Tools for Professional Designers</font></u></a> </li>
</ul>
<p><strong>WPF Sample Applications</strong> </p>
<ul class=ubb-list><br>
    <li><a title=http://www.thirteen23.com/ href="http://www.thirteen23.com/" target=_blank><u><font color=#6fbc4c>Cine.View</font></u></a>: A WPF viewing application that exposes the NetFlix catalog and ordering capabilities created by the thirteen23 company. They also have a great viewer for Flickr.
    <li><a title=http://firstlook.nytimes.com/ href="http://firstlook.nytimes.com/" target=_blank><u><font color=#6fbc4c>New York Times Reader</font></u></a>: A WPF content application that provides a rich browsing and reading experience for the paper's news content online in a Windows application
    <li><a title=http://scorbs.com/ href="http://scorbs.com/" target=_blank><u><font color=#6fbc4c>Karen Corby's Woodgrove Finance application</font></u></a>: This is a WPF XAML Browser application that provides rich visualization of stock market data in a multi-paned WPF app that runs in the browser.
    <li><a title=http://wpf.netfx3.com/ href="http://wpf.netfx3.com/" target=_blank><u><font color=#6fbc4c>More samples</font></u></a> </li>
</ul>
<p><span style="COLOR: blue"><strong>WCF</strong></span><br><br><strong>WCF Blogs</strong> </p>
<ul class=ubb-list>
    <li><a title=http://blogs.msdn.com/drnick/ href="http://blogs.msdn.com/drnick/" target=_blank><u><font color=#6fbc4c>Nicholas Allen&#8217;s Blogs</font></u></a>, Program Manager - WCF.
    <li><a title=http://www.netfxguide.com/resources/_17_mattavis_s_weblog_migrating_net_remoting_to_wcf.aspx href="http://www.netfxguide.com/resources/_17_mattavis_s_weblog_migrating_net_remoting_to_wcf.aspx" target=_blank><u><font color=#6fbc4c>Mattavis's WebLog: Migrating .NET Remoting to WCF</font></u></a> </li>
</ul>
<p><strong>WCF Training</strong><br><a title=https://www.microsoftelearning.com/eLearning/gotoResource.aspx?resourceid=%7b94D1CAA8-F853-4570-A744-4DD421603C98%7d&amp;locale=en-US href="https://www.microsoftelearning.com/eLearning/gotoResource.aspx?resourceid=%7b94D1CAA8-F853-4570-A744-4DD421603C98%7d&amp;locale=en-US" target=_blank><strong><u><font color=#6fbc4c>Clinic 5137 AE: Introduction to Developing with Windows Communication Foundation and Visual Studio 2005</font></u></strong></a><br><br><strong>WCF Whitepapers</strong><br><a title=http://www.netfxguide.com/resources/_211_msdn_from_net_remoting_to_the_windows_communication_foundation_wcf_.aspx href="http://www.netfxguide.com/resources/_211_msdn_from_net_remoting_to_the_windows_communication_foundation_wcf_.aspx" target=_blank><u><font color=#6fbc4c>MSDN: From .NET Remoting to the Windows Communication Foundation (WCF)</font></u></a><br><br><strong>WCF Presentations</strong><br>.NET University <a title=http://www.dotnet-u.com/courseware/WCFIntro.zip href="http://www.dotnet-u.com/courseware/WCFIntro.zip" target=_blank><u><font color=#6fbc4c>Windows Communication Foundation PPTs</font></u></a><br><br><strong>WCF Webcasts</strong> </p>
<ul class=ubb-list>
    <li><a title=http://www.netfxguide.com/resources/_643_msdn_architecture_webcast_using_windows_communication_foundation_with_biztalk_server_2006_level_200_.aspx href="http://www.netfxguide.com/resources/_643_msdn_architecture_webcast_using_windows_communication_foundation_with_biztalk_server_2006_level_200_.aspx" target=_blank><u><font color=#6fbc4c>MSDN Architecture Webcast: Using Windows Communication Foundation with BizTalk Server 2006 (Level 200)</font></u></a>
    <li><a title=http://www.netfxguide.com/resources/_338_msdn_architecture_webcast_building_powerful_ajax_style_solutions_with_asp_net_atlas_and_windows_communication_foundation_level_200_.aspx href="http://www.netfxguide.com/resources/_338_msdn_architecture_webcast_building_powerful_ajax_style_solutions_with_asp_net_atlas_and_windows_communication_foundation_level_200_.aspx" target=_blank><u><font color=#6fbc4c>MSDN Architecture Webcast: Building Powerful AJAX-Style Solutions with ASP.NET "Atlas" and Windows Communication Foundation (Level 200)</font></u></a>
    <li><a title=http://www.netfxguide.com/resources/_596_msdn_webcast_working_with_operations_and_calls_in_windows_communication_foundation_level_200_.aspx href="http://www.netfxguide.com/resources/_596_msdn_webcast_working_with_operations_and_calls_in_windows_communication_foundation_level_200_.aspx" target=_blank><u><font color=#6fbc4c>MSDN Webcast: Working with Operations and Calls in Windows Communication Foundation (Level 200)</font></u></a> </li>
</ul>
<p><strong>WCF Videos</strong> </p>
<ul class=ubb-list>
    <li><a title=http://www.netfxguide.com/resources/_87_msdn_tv_biztalk_server_and_indigo.aspx href="http://www.netfxguide.com/resources/_87_msdn_tv_biztalk_server_and_indigo.aspx" target=_blank><u><font color=#6fbc4c>MSDN TV: BizTalk Server and Indigo</font></u></a>
    <li><a title=http://channel9.msdn.com/ShowPost.aspx?PostID=236291 href="http://channel9.msdn.com/ShowPost.aspx?PostID=236291" target=_blank><u><font color=#6fbc4c>Laurence Melloul and Craig McMurty: WCF Tracing</font></u></a> </li>
</ul>
<p><strong>WCF Sample Applications </strong><br><a title=http://www.netfxguide.com/resources/_11_atlas_asp_net_using_windows_communication_foundation_with_atlas_.aspx href="http://www.netfxguide.com/resources/_11_atlas_asp_net_using_windows_communication_foundation_with_atlas_.aspx" target=_blank><u><font color=#6fbc4c>ATLAS.ASP.NET: Using Windows Communication Foundation with "Atlas"</font></u></a><br><br><span style="COLOR: blue"><strong>WF</strong></span><br><br><strong>WF Blogs</strong><br><a title=http://www.netfxguide.com/resources/_76_masteringbiztalk_com_using_wf_to_run_a_page_flow.aspx href="http://www.netfxguide.com/resources/_76_masteringbiztalk_com_using_wf_to_run_a_page_flow.aspx" target=_blank><u><font color=#6fbc4c>MasteringBizTalk.com: Using WF to run a page-flow</font></u></a><br><a title=http://www.netfxguide.com/resources/_129_msdn_blogs_windows_workflow_foundation_vs_biztalk_server.aspx href="http://www.netfxguide.com/resources/_129_msdn_blogs_windows_workflow_foundation_vs_biztalk_server.aspx" target=_blank><u><font color=#6fbc4c>MSDN Blogs: Windows Workflow Foundation vs BizTalk Server</font></u></a><br><br><strong>WF Whitepapers</strong> </p>
<ul class=ubb-list>
    <li><a title=http://www.netfxguide.com/resources/_403_a_look_at_the_biztalk_roadmap.aspx href="http://www.netfxguide.com/resources/_403_a_look_at_the_biztalk_roadmap.aspx" target=_blank><u><font color=#6fbc4c>A look at the BizTalk roadmap</font></u></a>
    <li><a title=http://www.netfxguide.com/resources/_311_working_with_windows_workflow_foundation_in_asp_net_working_with_windows_workflow_foundation_in_asp_net.aspx href="http://www.netfxguide.com/resources/_311_working_with_windows_workflow_foundation_in_asp_net_working_with_windows_workflow_foundation_in_asp_net.aspx" target=_blank><u><font color=#6fbc4c>Working with Windows Workflow Foundation in ASP.NET Working with Windows Workflow Foundation in ASP.NET</font></u></a>
    <li><a title=http://www.netfxguide.com/resources/_424_windows_workflow_foundation_for_web_services.aspx href="http://www.netfxguide.com/resources/_424_windows_workflow_foundation_for_web_services.aspx" target=_blank><u><font color=#6fbc4c>Windows Workflow Foundation for Web services</font></u></a>
    <li><a title=http://www.netfxguide.com/resources/_522_deploy_distributed_business_processes_with_windows_workflow_and_web_services.aspx href="http://www.netfxguide.com/resources/_522_deploy_distributed_business_processes_with_windows_workflow_and_web_services.aspx" target=_blank><u><font color=#6fbc4c>Deploy Distributed Business Processes With Windows Workflow And Web Services</font></u></a> </li>
</ul>
<p><strong>WF Training</strong><br><a title=https://www.microsoftelearning.com/eLearning/gotoResource.aspx?resourceid=%7bC669EE14-A3D5-4F6F-8843-2797C82D7909%7d&amp;locale=en-US href="https://www.microsoftelearning.com/eLearning/gotoResource.aspx?resourceid=%7bC669EE14-A3D5-4F6F-8843-2797C82D7909%7d&amp;locale=en-US" target=_blank><u><font color=#6fbc4c>Clinic 5136 AE: Introduction to Developing with Windows Workflow Foundation and Visual Studio 2005</font></u></a><br><br><strong>WF Presentations</strong><br>.NET University <a title=http://www.dotnet-u.com/courseware/WFIntro.zip href="http://www.dotnet-u.com/courseware/WFIntro.zip" target=_blank><u><font color=#6fbc4c>Windows Workflow Foundation PPTs</font></u></a><br><br><strong>WF Lab</strong><br><a title=http://www.netfxguide.com/resources/_565_ajax_based_windows_workflow_designer.aspx href="http://www.netfxguide.com/resources/_565_ajax_based_windows_workflow_designer.aspx" target=_blank><u><font color=#6fbc4c>Ajax based Windows Workflow Designer</font></u></a><br><br><strong>WF Videos</strong> </p>
<ul class=ubb-list>
    <li><a title=http://www.microsoft.com/emea/msdnshowtime/sessionh.aspx?videoid=259 href="http://www.microsoft.com/emea/msdnshowtime/sessionh.aspx?videoid=259" target=_blank><u><font color=#6fbc4c>WinFX (.NET 3.0) - Workflow Foundation (WF)</font></u></a>
    <li><a title=http://www.netfxguide.com/resources/_426_msdn_webcast_live_from_redmond_asp_net_an_overview_of_asp_net_and_windows_workflow_foundation_integration.aspx href="http://www.netfxguide.com/resources/_426_msdn_webcast_live_from_redmond_asp_net_an_overview_of_asp_net_and_windows_workflow_foundation_integration.aspx" target=_blank><u><font color=#6fbc4c>MSDN Webcast: Live From Redmond: ASP.NET: An Overview of ASP.NET and Windows Workflow Foundation Integration</font></u></a> </li>
</ul>
<p><span style="COLOR: blue"><strong>CardSpace</strong></span><br><br><strong>CardSpace Whitepapers</strong><br><a title=http://www.netfxguide.com/resources/_110_windows_vista_developer_center_a_guide_to_supporting_infocard_now_cardspace_v1_0_within_web_applications_and_browsers_.aspx href="http://www.netfxguide.com/resources/_110_windows_vista_developer_center_a_guide_to_supporting_infocard_now_cardspace_v1_0_within_web_applications_and_browsers_.aspx" target=_blank><u><font color=#6fbc4c>Windows Vista Developer Center:A Guide to Supporting InfoCard (now CardSpace) v1.0 Within Web Applications and Browsers.</font></u></a><br><br><strong>CardSpace Presentations</strong><br>.NET University <a title=http://www.dotnet-u.com/courseware/CardSpaceIntro.zip href="http://www.dotnet-u.com/courseware/CardSpaceIntro.zip" target=_blank><u><font color=#6fbc4c>Windows CardSpace PPTs</font></u></a><br><br><strong>CardSpace Sample Applications</strong><br><a title=http://www.netfxguide.com/resources/_620_introduction_to_cardspace_with_internet_explorer_7_0.aspx href="http://www.netfxguide.com/resources/_620_introduction_to_cardspace_with_internet_explorer_7_0.aspx" target=_blank><u><font color=#6fbc4c>Introduction to CardSpace with Internet Explorer 7.0</font></u></a> </p><img src ="http://www.blogjava.net/yeiwei/aggbug/109962.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yeiwei/" target="_blank">圣域飞侠</a> 2007-04-11 17:46 <a href="http://www.blogjava.net/yeiwei/archive/2007/04/11/109962.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>.Net 3.0的介绍与部署 </title><link>http://www.blogjava.net/yeiwei/archive/2007/04/11/109961.html</link><dc:creator>圣域飞侠</dc:creator><author>圣域飞侠</author><pubDate>Wed, 11 Apr 2007 09:46:00 GMT</pubDate><guid>http://www.blogjava.net/yeiwei/archive/2007/04/11/109961.html</guid><wfw:comment>http://www.blogjava.net/yeiwei/comments/109961.html</wfw:comment><comments>http://www.blogjava.net/yeiwei/archive/2007/04/11/109961.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yeiwei/comments/commentRss/109961.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yeiwei/services/trackbacks/109961.html</trackback:ping><description><![CDATA[&nbsp;沸沸扬扬的.net 3.0正式版终于发布，再一次感受到微软的霸气与智慧。从.net 1.0到.net 3.0微软的战略框架<br>越来越清晰，就是更好的用户体验，更好的开发环境。借助于vista ，office 2007的发布，.net 编程已经不可阻挡，Borland公司的没落是最好的诠释.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;相对于从1.1升级到2.0的换代性升级，从2.0到3.0的升级微软称为"扩展性"升级，是在原来2.0基础上增加了新的技术，原来2.0库称为3.0的一个子集。<img height=311 alt="" src="http://www.cnblogs.com/images/cnblogs_com/luca/netfx30.gif" width=615 border=0><br>关键技术：1。WPF&nbsp; 提供了用于构建下一代smart-client程序的类库，集成了UI设计，文档，多媒体等。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2。WCF&nbsp; 提供了统一的面向服务编程模型。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3。WWF 集成了开放基于工作流的逻辑处理程序的工具，引擎，模型。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4。简化并提高了在线用户的安全识别能力。<br><br>安装：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1。卸载所有3.0的beta版本。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2。如果已经安装了.net 2.0可以直接安装3.0四个扩展组件<a href="http://www.netfx3.com/blogs/news_and_announcements/archive/2006/11/06/.NET-Framework-3.0-has-been-released_2100_.aspx"><font color=#000080><u>&nbsp; http://www.netfx3.com/blogs/news_and_announcements/archive/2006/11/06/.NET-Framework-3.0-has-been-released_2100_.aspx</u></font></a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 没有安装2..0的可以去下载完整的安装包<a href="http://download.microsoft.com/download/3/F/0/3F0A922C-F239-4B9B-9CB0-DF53621C57D9/dotnetfx3.exe"><font color=#000080><u>http://download.microsoft.com/download/3/F/0/3F0A922C-F239-4B9B-9CB0-DF53621C57D9/dotnetfx3.exe</u></font></a><br><br><br>查看安装成功：<br>&nbsp;&nbsp;&nbsp; 打开注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup<br>查看InstallSuccess 是否为1<br><img src ="http://www.blogjava.net/yeiwei/aggbug/109961.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yeiwei/" target="_blank">圣域飞侠</a> 2007-04-11 17:46 <a href="http://www.blogjava.net/yeiwei/archive/2007/04/11/109961.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NET Framework 3.0　问答翻译 </title><link>http://www.blogjava.net/yeiwei/archive/2007/04/11/109958.html</link><dc:creator>圣域飞侠</dc:creator><author>圣域飞侠</author><pubDate>Wed, 11 Apr 2007 09:45:00 GMT</pubDate><guid>http://www.blogjava.net/yeiwei/archive/2007/04/11/109958.html</guid><wfw:comment>http://www.blogjava.net/yeiwei/comments/109958.html</wfw:comment><comments>http://www.blogjava.net/yeiwei/archive/2007/04/11/109958.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yeiwei/comments/commentRss/109958.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yeiwei/services/trackbacks/109958.html</trackback:ping><description><![CDATA[<p style="LINE-HEIGHT: 12pt"><span style="FONT-SIZE: 9pt"><font face=宋体>在</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> 2006 </span><span style="FONT-SIZE: 9pt"><font face=宋体>年</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> 6 </span><span style="FONT-SIZE: 9pt"><font face=宋体>月，微软副总裁</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> S. Somasegar </span><span style="FONT-SIZE: 9pt"><font face=宋体>宣布</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> WinFX </span><span style="FONT-SIZE: 9pt"><font face=宋体>将更名为</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0</span><span style="FONT-SIZE: 9pt"><font face=宋体>，请知道更多详细资料请看它的</font></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> <span lang=EN-US><a href="http://blogs.msdn.com/somasegar/archive/2006/06/09/624300.aspx"><font color=#0261b9><u>Blog</u></font></a></span></span><font face=宋体><span style="FONT-SIZE: 9pt">。</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"></span></font> </p>
<p style="LINE-HEIGHT: 12pt"><span style="FONT-SIZE: 9pt"><font face=宋体>这份文件包含了关于</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>更名常被问到的问题，对于部署额外的问题请参照</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> MSDN </span><span style="FONT-SIZE: 9pt"><font face=宋体>上的</font></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> <span lang=EN-US><a href="http://msdn.microsoft.com/winfx/default.aspx?pull=/library/en-us/dnlong/html/netfx30.asp"><font color=#0261b9><u>.NET Framework 3.0 deployment</u></font></a> </span></span><font face=宋体><span style="FONT-SIZE: 9pt">文件。</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"></span></font> </p>
<p style="LINE-HEIGHT: 12pt"><strong><span style="FONT-SIZE: 9pt"><font face=宋体>问</font></span></strong><strong><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> 1</span></strong><span style="FONT-SIZE: 9pt"><font face=宋体>：什么是</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0</span><span style="FONT-SIZE: 9pt"><font face=宋体>（先前代号</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> WinFX</span><span style="FONT-SIZE: 9pt"><font face=宋体>）？</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> <br><br></span><font face=宋体><strong><span style="FONT-SIZE: 9pt">答</span></strong><span style="FONT-SIZE: 9pt">：</span></font><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">.NET Framewrok 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>是微软受管理程式码编写模型，它是</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>的超集，以新的应用程式建构技术结合</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0 component</span><span style="FONT-SIZE: 9pt"><font face=宋体>，包括了视觉化令人震撼的用户体验（指</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> WPF,Avalon</span><span style="FONT-SIZE: 9pt"><font face=宋体>）、无缝高度整合与安全的通讯（指</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> WCF,Indigo</span><span style="FONT-SIZE: 9pt"><font face=宋体>）、塑造建构一个商业流程范围的能力（指</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> WF</span><span style="FONT-SIZE: 9pt"><font face=宋体>，</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">WorkFlow</span><span style="FONT-SIZE: 9pt"><font face=宋体>）及</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> Windows CardSpace</span><font face=宋体><span style="FONT-SIZE: 9pt">。</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"></span></font> </p>
<p style="LINE-HEIGHT: 12pt"><strong><span style="FONT-SIZE: 9pt"><font face=宋体>问</font></span></strong><strong><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> 2</span></strong><span style="FONT-SIZE: 9pt"><font face=宋体>：</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">WinFX </span><span style="FONT-SIZE: 9pt"><font face=宋体>技术有些什么？</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> <br><br></span><font face=宋体><strong><span style="FONT-SIZE: 9pt">答</span></strong><span style="FONT-SIZE: 9pt">：</span></font><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">WinFX </span><span style="FONT-SIZE: 9pt"><font face=宋体>技术现在将会包含在</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>之中释出，对于</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> WinFX </span><font face=宋体><span style="FONT-SIZE: 9pt">技术本身或交货日期并没有任何改变，其实是同样的技术，只不过单单命名改变罢了。</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"></span></font> </p>
<p style="LINE-HEIGHT: 12pt"><strong><span style="FONT-SIZE: 9pt"><font face=宋体>问</font></span></strong><strong><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> 3</span></strong><span style="FONT-SIZE: 9pt"><font face=宋体>：</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">.NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>与</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>之间的关连性为何？</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> <br><br></span><font face=宋体><strong><span style="FONT-SIZE: 9pt">答</span></strong><span style="FONT-SIZE: 9pt">：</span></font><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">.NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>是在</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>之上附加一些技术，</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">.NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>是在</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>之上附加了四大部分新技术：</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Windows Presentation Foundation (WPF) </span><span style="FONT-SIZE: 9pt"><font face=宋体>、</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Windows Workflow Foundation (WF) </span><span style="FONT-SIZE: 9pt"><font face=宋体>、</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Windows Communication Foundation (WCF) </span><span style="FONT-SIZE: 9pt"><font face=宋体>和</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> Windows CardSpace</span><span style="FONT-SIZE: 9pt"><font face=宋体>。在</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>中所包含的</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0 component </span><span style="FONT-SIZE: 9pt"><font face=宋体>本身并没有任何的变动，这意谓着今天数以百万计的</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET </span><span style="FONT-SIZE: 9pt"><font face=宋体>程式开发人员可使用既有的技术能力去建构</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>应用程式，同时也意谓着今天在</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>执行的应用程式也可以继续在</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>上执行。</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> <br><br></span><span style="FONT-SIZE: 9pt"><font face=宋体>以下为</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>的架构图： </font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"><br></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"></span></p>
<p><img alt="" src="http://msdn.microsoft.com/WinFX/images/netfx30.gif" border=0></p>
<p style="LINE-HEIGHT: 12pt"><strong><span style="FONT-SIZE: 9pt"><font face=宋体>问</font></span></strong><strong><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> 4</span></strong><span style="FONT-SIZE: 9pt"><font face=宋体>：当我安装</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>时会发生什么事？如果我已安装了</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>要如何升级？</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> <br><br></span><font face=宋体><strong><span style="FONT-SIZE: 9pt">答</span></strong><span style="FONT-SIZE: 9pt">：当你安装</span></font><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>时，</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">installer </span><span style="FONT-SIZE: 9pt"><font face=宋体>会检查你是否已经安装</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0</span><span style="FONT-SIZE: 9pt"><font face=宋体>，如果没有，</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">.NET Framework 3.0 installer </span><span style="FONT-SIZE: 9pt"><font face=宋体>会替您安装</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0</span><span style="FONT-SIZE: 9pt"><font face=宋体>，然后再安装</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 component</span><span style="FONT-SIZE: 9pt"><font face=宋体>；如果你已安装</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0</span><span style="FONT-SIZE: 9pt"><font face=宋体>，</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">.NET Framework 3.0 installer </span><span style="FONT-SIZE: 9pt"><font face=宋体>只会安装</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>新的</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> Component</span><font face=宋体><span style="FONT-SIZE: 9pt">。</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"></span></font> </p>
<p style="LINE-HEIGHT: 12pt"><strong><span style="FONT-SIZE: 9pt"><font face=宋体>问</font></span></strong><strong><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> 5</span></strong><span style="FONT-SIZE: 9pt"><font face=宋体>：我的组织刚通过能够将产品应用在</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>上的认证核准程序，我们需要在</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>之上重新全面进行相同的认证核准程序吗？我需要为</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>应用程式做任何的相容性测试吗（指在</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>上执行）？</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> <br><br></span><font face=宋体><strong><span style="FONT-SIZE: 9pt">答</span></strong><span style="FONT-SIZE: 9pt">：因为</span></font><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>只有加入新的</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> component </span><span style="FONT-SIZE: 9pt"><font face=宋体>在</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>之上，而没有变动任何的</font></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> <span lang=EN-US>.NET Framework 2.0 </span></span><span style="FONT-SIZE: 9pt"><font face=宋体>的</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> component</span><span style="FONT-SIZE: 9pt"><font face=宋体>，所以建构在</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>之上的应用程式将不会受到任何影响；故当您安装完</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>之后，并不需要为您的</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0 </span><font face=宋体><span style="FONT-SIZE: 9pt">应用程式做任何的测试。</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"></span></font> </p>
<p style="LINE-HEIGHT: 12pt"><strong><span style="FONT-SIZE: 9pt"><font face=宋体>问</font></span></strong><strong><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> 6</span></strong><span style="FONT-SIZE: 9pt"><font face=宋体>：名称的改变是否会反映在任何</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>既存的</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> APIs, assemblies </span><span style="FONT-SIZE: 9pt"><font face=宋体>与</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> namespace</span><span style="FONT-SIZE: 9pt"><font face=宋体>？</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> <br><br></span><font face=宋体><strong><span style="FONT-SIZE: 9pt">答</span></strong><span style="FONT-SIZE: 9pt">：在</span></font><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>既存的</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> APIs, assemblies </span><span style="FONT-SIZE: 9pt"><font face=宋体>与</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> namespace </span><span style="FONT-SIZE: 9pt"><font face=宋体>不会有任何的改变，你建构在</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>之上的应用程式将会继续照旧在</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><font face=宋体><span style="FONT-SIZE: 9pt">上执行。</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"></span></font> </p>
<p style="LINE-HEIGHT: 12pt"><strong><span style="FONT-SIZE: 9pt"><font face=宋体>问</font></span></strong><strong><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> 7</span></strong><span style="FONT-SIZE: 9pt"><font face=宋体>：</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">.NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>将会使用哪个版本的</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> Common Language Runtime (CLR)</span><span style="FONT-SIZE: 9pt"><font face=宋体>？</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> <br><br></span><font face=宋体><strong><span style="FONT-SIZE: 9pt">答</span></strong><span style="FONT-SIZE: 9pt">：</span></font><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">.NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>将会使用</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>的</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> CLR</span><span style="FONT-SIZE: 9pt"><font face=宋体>（</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">V2.0.50727</span><span style="FONT-SIZE: 9pt"><font face=宋体>），透过</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> CLR </span><span style="FONT-SIZE: 9pt"><font face=宋体>核心引擎的共用，将能够减少对整个开发平台的冲击，我们也期望较为底层的</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework component</span><span style="FONT-SIZE: 9pt"><font face=宋体>（例如</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> CLR Engine</span><span style="FONT-SIZE: 9pt"><font face=宋体>）能够较高阶层的</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> APIs </span><span style="FONT-SIZE: 9pt"><font face=宋体>更少变动，如此降低冲击的作法才能保障客户在</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET </span><font face=宋体><span style="FONT-SIZE: 9pt">技术上的投资。</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"></span></font> </p>
<p style="LINE-HEIGHT: 12pt"><strong><span style="FONT-SIZE: 9pt"><font face=宋体>问</font></span></strong><strong><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> 8</span></strong><span style="FONT-SIZE: 9pt"><font face=宋体>：如果</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework </span><span style="FONT-SIZE: 9pt"><font face=宋体>使用</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>的</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> runtime </span><span style="FONT-SIZE: 9pt"><font face=宋体>与</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> compiler</span><span style="FONT-SIZE: 9pt"><font face=宋体>，为何它是以</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>作为版本号码？</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> <br><br></span><font face=宋体><strong><span style="FONT-SIZE: 9pt">答</span></strong><span style="FONT-SIZE: 9pt">：伴随</span></font><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>所释出的新技术包括了</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> WCF, WF, WPF </span><span style="FONT-SIZE: 9pt"><font face=宋体>与</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> CardSpace</span><span style="FONT-SIZE: 9pt"><font face=宋体>，它提供了很多很棒的功能与创新，因此我们认为它应该以</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> 3.0 </span><font face=宋体><span style="FONT-SIZE: 9pt">作为版本号码。</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"></span></font> </p>
<p style="LINE-HEIGHT: 12pt"><strong><span style="FONT-SIZE: 9pt"><font face=宋体>问</font></span></strong><strong><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> 9</span></strong><span style="FONT-SIZE: 9pt"><font face=宋体>：</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">.NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>的并行</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> (Side by Side) </span><span style="FONT-SIZE: 9pt"><font face=宋体>该如何完成呢？</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> <br><br></span><font face=宋体><strong><span style="FONT-SIZE: 9pt">答</span></strong><span style="FONT-SIZE: 9pt">：因为</span></font><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>只有在</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>之上加入新的</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> components</span><span style="FONT-SIZE: 9pt"><font face=宋体>，所以</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>与</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>两者之间的</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> assemblies </span><span style="FONT-SIZE: 9pt"><font face=宋体>并没有重迭的部分，因此并没有实际的并行作业场景的问题存在，你可以在相同一台电脑上，同时执行</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>与</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><font face=宋体><span style="FONT-SIZE: 9pt">的应用程式。</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"></span></font> </p>
<p style="LINE-HEIGHT: 12pt"><span style="FONT-SIZE: 9pt"><font face=宋体>问</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> 10</span><span style="FONT-SIZE: 9pt"><font face=宋体>：我现在已执行建构在</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> WinFX </span><span style="FONT-SIZE: 9pt"><font face=宋体>之上的应用程式，是否我需要做任何的改变以便能够在</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>上执行？</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> <br><br></span><font face=宋体><strong><span style="FONT-SIZE: 9pt">答</span></strong><span style="FONT-SIZE: 9pt">：不需要，</span></font><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">WinFX </span><span style="FONT-SIZE: 9pt"><font face=宋体>的应用程式不需要做任何的改变就可以在</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>之上执行。当然由于</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>仍然在发展中，所以未来</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> Framework </span><font face=宋体><span style="FONT-SIZE: 9pt">也许有些变动也说不定。</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"></span></font> </p>
<p style="LINE-HEIGHT: 12pt"><strong><span style="FONT-SIZE: 9pt"><font face=宋体>问</font></span></strong><strong><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> 11</span></strong><span style="FONT-SIZE: 9pt"><font face=宋体>：我是否可以移除特定的</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 components</span><span style="FONT-SIZE: 9pt"><font face=宋体>？</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> <br><br></span><font face=宋体><strong><span style="FONT-SIZE: 9pt">答</span></strong><span style="FONT-SIZE: 9pt">：答案是不行的，因为</span></font><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 components</span><span style="FONT-SIZE: 9pt"><font face=宋体>（</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">WPF, WCF, WF, and CardSpace</span><span style="FONT-SIZE: 9pt"><font face=宋体>）是单一</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> Package </span><font face=宋体><span style="FONT-SIZE: 9pt">的一部分，并且是安装在一起的。</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"></span></font> </p>
<p style="LINE-HEIGHT: 12pt"><strong><span style="FONT-SIZE: 9pt"><font face=宋体>问</font></span></strong><strong><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> 12</span></strong><span style="FONT-SIZE: 9pt"><font face=宋体>：</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">C# 3.0</span><span style="FONT-SIZE: 9pt"><font face=宋体>、</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">VB 9</span><span style="FONT-SIZE: 9pt"><font face=宋体>、</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Atlas </span><span style="FONT-SIZE: 9pt"><font face=宋体>或</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> Linq </span><span style="FONT-SIZE: 9pt"><font face=宋体>是否会包含在</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>之中？</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> <br><br></span><font face=宋体><strong><span style="FONT-SIZE: 9pt">答</span></strong><span style="FONT-SIZE: 9pt">：答案是不会的，因为这些功能将会包含在更未来的版本，</span></font><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">.NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>只会包含先前所描述的</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> WinFX </span><font face=宋体><span style="FONT-SIZE: 9pt">技术。</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"></span></font> </p>
<p style="LINE-HEIGHT: 12pt"><strong><span style="FONT-SIZE: 9pt"><font face=宋体>问</font></span></strong><strong><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> 13</span></strong><span style="FONT-SIZE: 9pt"><font face=宋体>：在</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>发行时，是否会包含</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Compact Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>版本？</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> <br><br></span><font face=宋体><strong><span style="FONT-SIZE: 9pt">答</span></strong><span style="FONT-SIZE: 9pt">：答案是不会，我们目前正开发可支援</span></font><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>功能的的</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> Compact Framework </span><font face=宋体><span style="FONT-SIZE: 9pt">版本，但发行日期和所包含的功能目前尚未宣布。</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"></span></font> </p>
<p style="LINE-HEIGHT: 12pt"><strong><span style="FONT-SIZE: 9pt"><font face=宋体>问</font></span></strong><strong><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> 14</span></strong><span style="FONT-SIZE: 9pt"><font face=宋体>：代号</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> Orcas </span><span style="FONT-SIZE: 9pt"><font face=宋体>的</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> Visual Studio </span><span style="FONT-SIZE: 9pt"><font face=宋体>会是使用哪个版本号码的</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework</span><span style="FONT-SIZE: 9pt"><font face=宋体>？</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> <br><br></span><font face=宋体><strong><span style="FONT-SIZE: 9pt">答</span></strong><span style="FONT-SIZE: 9pt">：目前我们对于</span></font><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> Orcas </span><span style="FONT-SIZE: 9pt"><font face=宋体>产品仍在规划中，所以</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework </span><font face=宋体><span style="FONT-SIZE: 9pt">的版本号码尚未定义。</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"></span></font> </p>
<p style="LINE-HEIGHT: 12pt"><strong><span style="FONT-SIZE: 9pt"><font face=宋体>问</font></span></strong><strong><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> 15</span></strong><span style="FONT-SIZE: 9pt"><font face=宋体>：</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">.NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>中的新功能（</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">WPF, WCF, WF, and CardSpace</span><span style="FONT-SIZE: 9pt"><font face=宋体>）将会被安装在什么地方？是否和目前</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>所安装的路径会有所差异？</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> <br><br></span><font face=宋体><strong><span style="FONT-SIZE: 9pt">答</span></strong><span style="FONT-SIZE: 9pt">：和</span></font><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>共用的</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> components </span><span style="FONT-SIZE: 9pt"><font face=宋体>将会安装在</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> %windir%\Microsoft.NET\Framework\V2.0.50727 </span><span style="FONT-SIZE: 9pt"><font face=宋体>路径；而</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>新功能将会安装在</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> %windir%\Microsoft.NET\Framework\V3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>路径。安装与部署的更多详细资讯请参考</font></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> <span lang=EN-US><a href="http://msdn.microsoft.com/winfx/default.aspx?pull=/library/en-us/dnlong/html/netfx30.asp"><font color=#0261b9><u>.NET 3.0 Deployment whitepaper</u></font></a></span></span><font face=宋体><span style="FONT-SIZE: 9pt">。</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"></span></font> </p>
<p style="LINE-HEIGHT: 12pt"><strong><span style="FONT-SIZE: 9pt"><font face=宋体>问</font></span></strong><strong><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> 16</span></strong><span style="FONT-SIZE: 9pt"><font face=宋体>：</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">.NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>会有多大？这样的改变，是否会比目前释出的版本变得更大？</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> <br><br></span><font face=宋体><strong><span style="FONT-SIZE: 9pt">答</span></strong><span style="FONT-SIZE: 9pt">：从</span></font><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> WinFX </span><span style="FONT-SIZE: 9pt"><font face=宋体>命名变更成</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>之后的大小并没有变更，它大约是</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> 49MB</span><span style="FONT-SIZE: 9pt"><font face=宋体>，其中包含了</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>的</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> 22MB</span><font face=宋体><span style="FONT-SIZE: 9pt">。</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"></span></font> </p>
<p style="LINE-HEIGHT: 12pt"><strong><span style="FONT-SIZE: 9pt"><font face=宋体>问</font></span></strong><strong><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> 17</span></strong><span style="FONT-SIZE: 9pt"><font face=宋体>：对于</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>的服务运作将会是如何？如果我安装</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>之后，我还可以获得</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>的更新服务吗？</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> <br><br></span><font face=宋体><strong><span style="FONT-SIZE: 9pt">答</span></strong><span style="FONT-SIZE: 9pt">：更新服务对于</span></font><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>及其作业系统将仍会被继续，任何的</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>更新服务也将会在安装</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>时所一并安装的</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 2.0 components </span><font face=宋体><span style="FONT-SIZE: 9pt">上正常作用。</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"></span></font> </p>
<p style="LINE-HEIGHT: 12pt"><strong><span style="FONT-SIZE: 9pt"><font face=宋体>问</font></span></strong><strong><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> 18</span></strong><span style="FONT-SIZE: 9pt"><font face=宋体>：</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">.NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>将会支援何种作业系统？</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> <br><br></span><font face=宋体><strong><span style="FONT-SIZE: 9pt">答</span></strong><span style="FONT-SIZE: 9pt">：</span></font><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">.NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>将会支援</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> Windows Vista&#8482;, Windows Server 2003 (SP1), and Windows XP (SP2) </span><font face=宋体><span style="FONT-SIZE: 9pt">作业系统。</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"></span></font> </p>
<p style="LINE-HEIGHT: 12pt"><strong><span style="FONT-SIZE: 9pt"><font face=宋体>问</font></span></strong><strong><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> 19</span></strong><span style="FONT-SIZE: 9pt"><font face=宋体>：何时会发布释出</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0</span><span style="FONT-SIZE: 9pt"><font face=宋体>？</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> <br><br></span><font face=宋体><strong><span style="FONT-SIZE: 9pt">答</span></strong><span style="FONT-SIZE: 9pt">：</span></font><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">.NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>会是包含在</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> Windows Vista </span><span style="FONT-SIZE: 9pt"><font face=宋体>作业系统的一部分，</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">Windows Vista </span><span style="FONT-SIZE: 9pt"><font face=宋体>的客户将会得到</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0</span><span style="FONT-SIZE: 9pt"><font face=宋体>。给商业客户的第一个</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> Windows Vista </span><span style="FONT-SIZE: 9pt"><font face=宋体>版本，目前计划是在</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> 2006 </span><span style="FONT-SIZE: 9pt"><font face=宋体>年</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> 11 </span><span style="FONT-SIZE: 9pt"><font face=宋体>月，然而最后日期会视客户回馈反应而决定。</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> <br><br></span><span style="FONT-SIZE: 9pt"><font face=宋体>在此同时，我们会广泛地提供给</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> Windows XP and Windows Server 2003 </span><span style="FONT-SIZE: 9pt"><font face=宋体>客户获得</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>下载。</font></span><span style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> <span lang=EN-US></span></span></p>
<p style="LINE-HEIGHT: 12pt"><strong><span style="FONT-SIZE: 9pt"><font face=宋体>问</font></span></strong><strong><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> 20</span></strong><span style="FONT-SIZE: 9pt"><font face=宋体>：</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">.NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>与</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> Windows Vista </span><span style="FONT-SIZE: 9pt"><font face=宋体>作业系统之间的相关性为何？</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> <br><br></span><font face=宋体><strong><span style="FONT-SIZE: 9pt">答</span></strong><span style="FONT-SIZE: 9pt">：</span></font><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana">.NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>是</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> Windows Vista </span><span style="FONT-SIZE: 9pt"><font face=宋体>作业系统的核心元件，并且预设是会安装在</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> Windows Vista </span><span style="FONT-SIZE: 9pt"><font face=宋体>作业系统，而它也会让</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> Windows XP and Windows Server 2003 </span><font face=宋体><span style="FONT-SIZE: 9pt">客户取得。</span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"></span></font> </p>
<p style="LINE-HEIGHT: 12pt"><strong><span style="FONT-SIZE: 9pt"><font face=宋体>问</font></span></strong><strong><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> 21</span></strong><span style="FONT-SIZE: 9pt"><font face=宋体>：是否</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>有任何的功能只能在</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> Windows Vista </span><span style="FONT-SIZE: 9pt"><font face=宋体>作业系统上才能执行？</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> <br><br></span><font face=宋体><strong><span style="FONT-SIZE: 9pt">答</span></strong><span style="FONT-SIZE: 9pt">：虽然有些</span></font><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> .NET Framework 3.0 </span><span style="FONT-SIZE: 9pt"><font face=宋体>的最佳化将会因</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> Windows Vista </span><span style="FONT-SIZE: 9pt"><font face=宋体>新功而享有利益，但我们努力提供一致性的经验在</font></span><span lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: Verdana"> Windows Vista, Windows Server 2003, and Windows XP </span><font face=宋体><span style="FONT-SIZE: 9pt">这三种作业系统之上。</span></font></p>
&nbsp;<br><img src ="http://www.blogjava.net/yeiwei/aggbug/109958.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yeiwei/" target="_blank">圣域飞侠</a> 2007-04-11 17:45 <a href="http://www.blogjava.net/yeiwei/archive/2007/04/11/109958.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ASP.NET2.0文件图片处理</title><link>http://www.blogjava.net/yeiwei/archive/2007/04/04/108347.html</link><dc:creator>圣域飞侠</dc:creator><author>圣域飞侠</author><pubDate>Wed, 04 Apr 2007 01:49:00 GMT</pubDate><guid>http://www.blogjava.net/yeiwei/archive/2007/04/04/108347.html</guid><wfw:comment>http://www.blogjava.net/yeiwei/comments/108347.html</wfw:comment><comments>http://www.blogjava.net/yeiwei/archive/2007/04/04/108347.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yeiwei/comments/commentRss/108347.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yeiwei/services/trackbacks/108347.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 1.最简单的单文件上传(没花头)2.多文件上传3.客户端检查上传文件类型(以上传图片为例)4.服务器端检查上传文件类型(以上传图片为例) 5.服务器端检查上传文件类型(可以检测真正文件名) 6.上传文件文件名唯一性处理(时间戳+SessionID)7.上传图片生成等比例缩略图8.上传图片加水印(文字水印，图片水印，文字+图片水印)9.1.最简单的单文件上传(没花头)效果图：说明：这是最基本...&nbsp;&nbsp;<a href='http://www.blogjava.net/yeiwei/archive/2007/04/04/108347.html'>阅读全文</a><img src ="http://www.blogjava.net/yeiwei/aggbug/108347.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yeiwei/" target="_blank">圣域飞侠</a> 2007-04-04 09:49 <a href="http://www.blogjava.net/yeiwei/archive/2007/04/04/108347.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>赛马游戏源码</title><link>http://www.blogjava.net/yeiwei/archive/2007/04/02/107885.html</link><dc:creator>圣域飞侠</dc:creator><author>圣域飞侠</author><pubDate>Mon, 02 Apr 2007 02:46:00 GMT</pubDate><guid>http://www.blogjava.net/yeiwei/archive/2007/04/02/107885.html</guid><wfw:comment>http://www.blogjava.net/yeiwei/comments/107885.html</wfw:comment><comments>http://www.blogjava.net/yeiwei/archive/2007/04/02/107885.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yeiwei/comments/commentRss/107885.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yeiwei/services/trackbacks/107885.html</trackback:ping><description><![CDATA[package HorseClub;<br><br>//import javax.microedition.lcdui.*;<br>import java.util.Random;<br>import java.lang.String;<br><br>public class HorseX<br>{<br>public int m_No;<br>public int m_HorseAge;<br>public int m_HorseEx,m_HorseEndur,m_HorseHealth;<br>public char[] m_HorseName=new char[4];//="my horse";<br>// public static StringBuffer m_HorseName;//new char[4];//="my horse";<br>public static final String LetterTable="ABCDEFGHIJKLMNOPQRSTUVWXYZ";<br>public int m_Speed;<br>public int m_HorseState;<br>public int m_golds;<br>public int m_silvers;<br><br>public HorseX(int endur,int exp,int health,int no)<br>{<br><br>init(endur,exp,health,no);<br><br>}<br>public void init(int endur,int exp,int health,int no)<br>{<br>int randnum=0;<br><br>// rand.setSeed(no*12398147);<br>randnum=HorseMidlet.rand.nextInt();<br>m_HorseAge=Myabs(randnum%6+1);<br><br>//the "10" is the difficulty<br><br>m_HorseEndur=Myabs((randnum%20+10-20+endur))+1;<br>m_HorseEx=Myabs((randnum%20+10-20+exp))+1;<br>m_HorseHealth=Myabs((randnum%20+10-20+health))+1;<br>int x=m_HorseEndur;<br>// m_HorseName.append(LetterTable.charAt(x%25)).append(LetterTa<br>ble.charAt((x+5)%25)).append(LetterTable.charAt((x+17)%25));<br>m_HorseName[0]=LetterTable.charAt(x%25);<br>m_HorseName[1]=LetterTable.charAt((x+5)%25);<br>m_HorseName[2]=LetterTable.charAt((x+17)%25);<br>m_HorseState=randnum%4;<br>m_Speed=GetSpeed();<br>m_No=no;<br>m_golds=0;<br>m_silvers=0;<br><br>}<br><br>public static int Myabs(int value)<br>{<br>if(value&lt;0)<br>value*=-1;<br>return value;<br>}<br><br>public static int Mysign(int value)<br>{<br>if(value&lt;0)<br>return -1;<br>return 1;<br>}<br><br><br>//Calculate teh horse speed<br>public int GetSpeed()<br>{<br>int i=0;<br>int randnum=0;<br><br>randnum=HorseMidlet.rand.nextInt();<br>i=(m_HorseEx+m_HorseEndur+m_HorseHealth)/3;<br>i=Myabs(m_HorseEx-i)+Myabs(m_HorseEndur-i)+Myabs(m_HorseHealth-i)+1;<br>//i=i*rand()%3+1;<br><br>i=(m_HorseEx*4+m_HorseEndur*2+m_HorseHealth*3)*(randnum%2+1)/i;<br>return i;<br><br>}<br><br>}<br><br><br><br><br><br>package HorseClub;<br>import javax.microedition.lcdui.*;<br>import java.util.Random;<br><br>public class HorseCanvas extends Canvas implements Runnable, CommandListener<br>{<br>private HorseMidlet midlet;<br>private volatile Thread animationThread=null;<br><br>private static int canvasHeight, canvasWidth;<br>private HorseRacing myHorseRacing;<br><br>private Image buffer;<br>private Graphics graphics;<br><br>//for lot UI<br>private static int lot_no;<br>private static int lot_money;<br>private static int lot_select=0;//0 for lot_no<br>private static int sumTemp;<br>//images<br><br><br>private boolean running;<br>// private final int SLEEP=10;<br>private final int SLEEP=10;<br>private int ReadyToSleep=0;<br>private int Intro_pos=0;<br>private Command exit;<br>// private Command memory;<br>private Command newGame;<br><br>private Image[] imgMenu = null;<br>private Image[] imgDot = null;<br>// imgfloor=new Image[7];<br>private Image[] imgLot = null;<br>private Image[] imgTextFirstLot1 = null;<br>private Image[] imgTextFirstLot2 = null;<br><br>private Image[] imgTmp = null;<br>private Image[] imgTextSecondLot1= null;<br>private Image[] imgTextSecondLot2= null;<br>private Image[] imgTextRacingNum = null;<br>private Image[] imgTextAge = null;<br>private Image[] imgTextExp = null;<br>private Image[] imgTextEndur = null;<br>private Image[] imgTextHealth = null;<br>private Image[] imgTextTotalMoney = null;<br>private Image[] imgTextLotNum = null;<br>private Image[] imgTextLotMoney = null;<br>private Image[] imgTextOK1 = null;<br>private Image[] imgTextOK2 = null;<br><br>private Image[] imgTextReset1 = null;<br>private Image[] imgTextReset2 = null;<br><br>private Image[] imgTextBack1 = null;<br>private Image[] imgTextBack2 = null;<br><br><br>private Image[] imgWin = null;<br><br><br><br><br>public HorseCanvas(HorseMidlet midlet)<br>{<br>this.midlet=midlet;<br>canvasHeight=getHeight();<br>canvasWidth=getWidth();<br><br>myHorseRacing=new HorseRacing();<br><br>buffer=Image.createImage(canvasWidth, canvasHeight);<br>graphics=buffer.getGraphics();<br><br>exit=new Command("退出", Command.STOP,1);<br>// memory=new Command("Memory", Command.SCREEN,1);<br>newGame = new Command("新游戏",Command.SCREEN,1);<br><br>this.addCommand(exit);<br>// this.addCommand(memory);<br>this.addCommand(newGame);<br><br>this.setCommandListener(this);<br>sumTemp = 0;<br><br>imgMenu=new Image[1];<br>imgDot= new Image[1];<br>imgMenu=HorseMidlet.getImages("menu",1);<br>System.out.println("Free memory: MENU"+Runtime.getRuntime().freeMemory());<br><br>imgDot=HorseMidlet.getImages("bluedot",1);<br>System.out.println("Free memory: BLUEDOT"+Runtime.getRuntime().freeMemory(<br>));<br><br>imgLot = new Image[1];<br><br>imgLot=HorseMidlet.getImages("lothorse",1);<br><br>imgTextFirstLot1 = new Image[1];<br>imgTextFirstLot1 = HorseMidlet.getImages("text_firston", 1);<br>imgTextFirstLot2 = new Image[1];<br>imgTextFirstLot2 = HorseMidlet.getImages("text_firstoff", 1);<br><br>imgTextSecondLot1 = new Image[1];<br>imgTextSecondLot1 = HorseMidlet.getImages("text_secondon", 1);<br>imgTextSecondLot2 = new Image[1];<br>imgTextSecondLot2 = HorseMidlet.getImages("text_secondoff", 1);<br><br>imgTextRacingNum = new Image[1];<br>imgTextRacingNum=HorseMidlet.getImages("text_racingnum",1);<br><br>imgTextAge = new Image[1];<br>imgTextAge=HorseMidlet.getImages("text_age",1);<br><br>imgTextExp = new Image[1];<br>imgTextExp=HorseMidlet.getImages("text_exp",1);<br><br>imgTextEndur = new Image[1];<br>imgTextEndur=HorseMidlet.getImages("text_endur",1);<br><br><br>imgTextHealth = new Image[1];<br>imgTextHealth=HorseMidlet.getImages("text_health",1);<br><br>imgTextTotalMoney = new Image[1];<br>imgTextTotalMoney=HorseMidlet.getImages("text_totalmoney",1);<br><br>imgTextLotNum = new Image[1];<br>imgTextLotNum=HorseMidlet.getImages("text_lotnum",1);<br><br>imgTextLotMoney = new Image[1];<br>imgTextLotMoney=HorseMidlet.getImages("text_lotmoney",1);<br><br>imgTextOK1 = new Image[1];<br>imgTextOK1 = HorseMidlet.getImages("text_okon", 1);<br>imgTextOK2 = new Image[1];<br>imgTextOK2 = HorseMidlet.getImages("text_okoff", 1);<br><br>imgTextReset1 = new Image[1];<br>imgTextReset1 = HorseMidlet.getImages("text_reseton", 1);<br>imgTextReset2 = new Image[1];<br>imgTextReset2 = HorseMidlet.getImages("text_resetoff", 1);<br><br>imgTextBack1 = new Image[1];<br>imgTextBack1 = HorseMidlet.getImages("text_backon", 1);<br><br>imgTextBack2 = new Image[1];<br>imgTextBack2 = HorseMidlet.getImages("text_backoff", 1);<br><br>// imgWin = new Image[1];<br>// imgWin=HorseMidlet.getImages("win",1);<br><br><br><br><br><br><br>repaint();<br>}<br><br>public static int getCanvasHeight() {return canvasHeight;}<br>public static int getCanvasWidth() {return canvasWidth;}<br><br>synchronized void start()<br>{<br>running=true;<br>animationThread=new Thread(this);<br>animationThread.start();<br><br>}<br>public void run()<br>{<br>try<br>{<br>while (running)<br>{<br>repaint(0,0,canvasWidth, canvasHeight);<br>serviceRepaints();<br>Thread.sleep(SLEEP);<br>}<br>}<br>catch(InterruptedException ie)<br>{<br>System.out.println(ie.toString());<br>}<br>}<br><br>synchronized void stop()<br>{<br>running=false;<br>}<br><br>public void paint (Graphics g)<br>{<br>System.out.println("Free memory: "+Runtime.getRuntime().freeMemory()+" Tot<br>al Memory"+Runtime.getRuntime().totalMemory());<br><br><br>switch (HorseMidlet.gamestate) {<br>case HorseMidlet.GAME_STATE_START:<br>//draw menu<br><br><br>g.setColor(210,210,250);<br>g.fillRect(0,0,getCanvasWidth(),getCanvasHeight());<br>// if (sumTemp == 0)<br>// {<br><br>/* imgMenu=HorseMidlet.getImages("menu",1);<br>System.out.println("Free memory: MENU"+Runtime.getRuntime().freeM<br>emory());<br>imgDot=HorseMidlet.getImages("bluedot",1);<br>System.out.println("Free memory: BLUEDOT"+Runtime.getRuntime().fr<br>eeMemory());<br>sumTemp = 1;*/<br>// }<br><br><br><br>// g.drawImage(imgMenu[0],10,10,g.LEFT|g.TOP);<br>// g.drawImage(imgDot[0],30,75+HorseMidlet.substate*21,g.LEFT|g.TOP);<br><br>g.drawImage(imgMenu[0],0,10,g.LEFT|g.TOP);<br>g.drawImage(imgDot[0],16,75+HorseMidlet.substate*21,g.LEFT|g.TOP);<br>System.out.println("Free memory: ***"+Runtime.getRuntime().freeMemor<br>y());<br>g.setColor(127,0,0);<br><br>// g.drawString(Long.toString(Runtime.getRuntime().totalMemory())+"你<br>好",10,10,g.TOP|g.LEFT);<br>// g.drawString(Long.toString(Runtime.getRuntime().freeMemory()),10,30,<br>g.TOP|g.LEFT);<br><br>// imgMenu = null;<br>// imgDot = null;<br><br><br><br>break;<br><br>case HorseMidlet.GAME_STATE_INTRO:<br>g.setColor(210,210,250);<br>g.fillRect(0,0,getCanvasWidth(),getCanvasHeight());<br><br>// g.drawImage(HorseMidlet.imgIntroBG[0],10,10,g.LEFT|g.TOP);<br>g.drawImage(HorseMidlet.imgIntroBG[0],0,10,g.LEFT|g.TOP);<br><br>// 此处需要修改<br>if(Intro_pos<horsemidlet.imgintro[0].getheight()-getcanvasheight()+3<br> 0)<br>Intro_pos++;<br><br>// g.setClip(10,10,HorseMidlet.imgIntro[0].getWidth() , HorseMidlet.i<br>mgIntro[0].getHeight());<br>// g.drawImage(HorseMidlet.imgIntro[0], 10,-Intro_pos+10, g.LEFT | g.<br>TOP);<br>// g.setClip(0, 0, getCanvasWidth(),getCanvasHeight());<br>g.setClip(0,0,HorseMidlet.imgIntro[0].getWidth() , HorseMidlet.imgIn<br>tro[0].getHeight());<br>g.drawImage(HorseMidlet.imgIntro[0], 0,-Intro_pos, g.LEFT | g.TOP);<br><br>// if (Intro_pos==HorseMidlet.imgIntro[0].getHeight()-getCanvasHeight<br>()-100)<br>// {<br>// g.drawImage(HorseMidlet.imgIntro[1], 3,getCanvasHeight()-60, g.LEF<br>T | g.TOP);<br>// }<br><br>g.setClip(0, 0, getCanvasWidth(),getCanvasHeight());<br><br>try<br>{<br>Thread.sleep(8);<br>repaint();<br>}<br>catch(InterruptedException ie)<br>{<br>System.out.println(ie.toString());<br>}<br><br><br><br>break;<br>case HorseMidlet.GAME_STATE_LOT:<br>// imgMenu = null;<br>// imgDot = null;<br>//draw lot<br>if(HorseMidlet.substate==0)<br>{<br>lot_no=HorseMidlet.firstlot_no;<br>lot_money=HorseMidlet.firstlot_money;<br>}<br>if(HorseMidlet.substate==1)<br>{<br>lot_no=HorseMidlet.secondlot_no;<br>lot_money=HorseMidlet.secondlot_money;<br>}<br><br>// Image[] imgLot=new Image[1];<br><br>// imgLot=HorseMidlet.getImages("lothorse",1);<br>g.setColor(105,117,184);<br>g.fillRect(0,0,getCanvasWidth(),getCanvasHeight());<br>// g.drawImage(imgLot[0],10,7,g.LEFT|g.TOP);<br>g.drawImage(imgLot[0],0,7,g.LEFT|g.TOP);<br>g.setColor(0,0,0);<br>// g.fillRect(10,46,40,14);<br>g.fillRect(0,46,40,14);<br>//draw the name<br>g.setColor(255,255,255);<br>// g.drawChars(myHorseRacing.horses[lot_no].m_HorseName,0,3,28,59,1);<br><br>g.drawChars(myHorseRacing.horses[lot_no].m_HorseName,0,3,18,59,1);<br><br>// Image[] imgTextFirstLot=new Image[1];<br>if(HorseMidlet.substate==0)<br>{<br>// imgTextFirstLot = HorseMidlet.getImages("text_firston", 1);<br>g.drawImage(imgTextFirstLot1[0],0,61,g.LEFT|g.TOP);<br>}<br>else<br>{<br>// imgTextFirstLot = HorseMidlet.getImages("text_firstoff", 1);<br>g.drawImage(imgTextFirstLot2[0],0,61,g.LEFT|g.TOP);<br>}<br><br>// g.drawImage(imgTextFirstLot[0],10,61,g.LEFT|g.TOP);<br>// g.drawImage(imgTextFirstLot[0],0,61,g.LEFT|g.TOP);<br><br>// Image[] imgTextSecondLot=new Image[1];<br>if(HorseMidlet.substate==1)<br>{<br>// imgTextSecondLot = HorseMidlet.getImages("text_secondon", 1);<br>g.drawImage(imgTextSecondLot1[0],0,74,g.LEFT|g.TOP);<br>}<br>else<br>{<br>// imgTextSecondLot = HorseMidlet.getImages("text_secondoff", 1);<br>g.drawImage(imgTextSecondLot2[0],0,74,g.LEFT|g.TOP);<br>}<br><br>// g.drawImage(imgTextSecondLot[0],10,74,g.LEFT|g.TOP);<br>// g.drawImage(imgTextSecondLot[0],0,74,g.LEFT|g.TOP);<br><br><br>//draw the horse info<br>g.setColor(255,180,0);<br>// g.fillRect(60,7,getCanvasWidth()/2+20,getCanvasHeight()/2+4);<br>//右上角<br>g.fillRect(50,7,76,getCanvasHeight()/2+4);<br><br>g.setColor(0,0,0);<br>// g.drawRect(60,7,getCanvasWidth()/2+20,getCanvasHeight()/2+4);<br>g.drawRect(50,7,76,getCanvasHeight()/2+4);<br><br>g.setColor(255,255,255);<br>//draw horse info text<br>// Image[] imgTextRacingNum=new Image[1];<br>// imgTextRacingNum=HorseMidlet.getImages("text_racingnum",1);<br>// g.drawImage(imgTextRacingNum[0],70,13,g.LEFT|g.TOP);<br>g.drawImage(imgTextRacingNum[0],55,13,g.LEFT|g.TOP);<br><br>// Image[] imgTextAge=new Image[1];<br>// imgTextAge=HorseMidlet.getImages("text_age",1);<br>// g.drawImage(imgTextAge[0],70,27,g.LEFT|g.TOP);<br>g.drawImage(imgTextAge[0],55,27,g.LEFT|g.TOP);<br><br>// Image[] imgTextExp=new Image[1];<br>// imgTextExp=HorseMidlet.getImages("text_exp",1);<br>// g.drawImage(imgTextExp[0],70,41,g.LEFT|g.TOP);<br>g.drawImage(imgTextExp[0],55,41,g.LEFT|g.TOP);<br><br>// Image[] imgTextEndur=new Image[1];<br>// imgTextEndur=HorseMidlet.getImages("text_endur",1);<br><br>// g.drawImage(imgTextEndur[0],70,55,g.LEFT|g.TOP);<br>g.drawImage(imgTextEndur[0],55,55,g.LEFT|g.TOP);<br><br>// Image[] imgTextHealth=new Image[1];<br>// imgTextHealth=HorseMidlet.getImages("text_health",1);<br>// g.drawImage(imgTextHealth[0],70,69,g.LEFT|g.TOP);<br>g.drawImage(imgTextHealth[0],55,69,g.LEFT|g.TOP);<br><br>/* g.drawString(java.lang.Integer.toString(myHorseRacing.horses[lot_no<br>].m_No),140,22,1);<br>g.drawString(java.lang.Integer.toString(myHorseRacing.horses[lot_no].<br>m_HorseAge),142,34,1);<br>g.drawString(java.lang.Integer.toString(myHorseRacing.horses[lot_no].<br>m_HorseEx),140,50,1);<br>g.drawString(java.lang.Integer.toString(myHorseRacing.horses[lot_no].<br>m_HorseEndur),140,64,1);<br>g.drawString(java.lang.Integer.toString(myHorseRacing.horses[lot_no].<br>m_HorseHealth),140,78,1);<br>*/<br>g.drawString(java.lang.Integer.toString(myHorseRacing.horses[lot_no].<br>m_No),112,22,1);<br>g.drawString(java.lang.Integer.toString(myHorseRacing.horses[lot_no].<br>m_HorseAge),112,34,1);<br>g.drawString(java.lang.Integer.toString(myHorseRacing.horses[lot_no].<br>m_HorseEx),110,50,1);<br>g.drawString(java.lang.Integer.toString(myHorseRacing.horses[lot_no].<br>m_HorseEndur),110,64,1);<br>g.drawString(java.lang.Integer.toString(myHorseRacing.horses[lot_no].<br>m_HorseHealth),110,78,1);<br><br><br>//draw lot info box<br><br>g.setColor(255,180,0);<br>// g.fillRect(10,getCanvasHeight()/2+18,getCanvasWidth()/2+20,44);<br>g.fillRect(0,getCanvasHeight()/2+18,87,44);<br><br>g.setColor(0,0,0);<br>// g.drawRect(10,getCanvasHeight()/2+18,getCanvasWidth()/2+20,44);<br>g.drawRect(0,getCanvasHeight()/2+18,87,44);<br><br><br>// Image[] imgTextTotalMoney=new Image[1];<br>// imgTextTotalMoney=HorseMidlet.getImages("text_totalmoney",1);<br>// g.drawImage(imgTextTotalMoney[0],17,92,g.LEFT|g.TOP);<br>g.drawImage(imgTextTotalMoney[0],2,92,g.LEFT|g.TOP);<br><br>g.setColor(0,0,0);<br>// g.fillRect(70,92,40,12);<br>g.fillRect(49,92,35,12);<br><br>// g.drawLine(10,105,10+getCanvasWidth()/2+20,105);<br>g.drawLine(0,105,87,105);<br><br>// Image[] imgTextLotNum=new Image[1];<br>// imgTextLotNum=HorseMidlet.getImages("text_lotnum",1);<br>// g.drawImage(imgTextLotNum[0],17,106,g.LEFT|g.TOP);<br>g.drawImage(imgTextLotNum[0],2,106,g.LEFT|g.TOP);<br><br>// g.fillRect(70,106,40,12);<br><br>// g.drawLine(10,119,10+getCanvasWidth()/2+20,119);<br>g.fillRect(49,106,35,12);<br>g.drawLine(0,119,87,119);<br><br>// Image[] imgTextLotMoney=new Image[1];<br>// imgTextLotMoney=HorseMidlet.getImages("text_lotmoney",1);<br>// g.drawImage(imgTextLotMoney[0],17,120,g.LEFT|g.TOP);<br>// g.fillRect(70,120,40,12);<br>g.drawImage(imgTextLotMoney[0],2,120,g.LEFT|g.TOP);<br>g.fillRect(49,120,35,12);<br><br>//draw lot info<br>g.setColor(255,255,255);<br>// g.drawString(java.lang.Integer.toString(HorseMidlet.mytotalmoney),8<br>5,103,1);<br><br>g.drawString(java.lang.Integer.toString(HorseMidlet.mytotalmoney),63,<br>103,1);<br><br>if(lot_select==0)<br>{<br>g.setColor(0,255,80);<br>}<br>else<br>{<br>g.setColor(255,255,255);<br><br>}<br>// g.drawString(java.lang.Integer.toString(lot_no+1), 85,<br>// 117, 1);<br>g.drawString(java.lang.Integer.toString(lot_no+1), 63,117, 1);<br><br>if(lot_select==1)<br>{<br>g.setColor(0,255,80);<br>}<br>else<br>{<br>g.setColor(255,255,255);<br>}<br>// g.drawString(java.lang.Integer.toString(lot_money),<br>// 85, 131, 1);<br>g.drawString(java.lang.Integer.toString(lot_money), 63, 131, 1);<br><br><br>// Image[] imgTextOK=new Image[1];<br><br>if(HorseMidlet.substate==2)<br>{<br>// imgTextOK = HorseMidlet.getImages("text_okon", 1);<br>g.drawImage(imgTextOK1[0],89,93,g.LEFT|g.TOP);<br><br>}<br>else<br>{<br>// imgTextOK = HorseMidlet.getImages("text_okoff", 1);<br>g.drawImage(imgTextOK2[0],89,93,g.LEFT|g.TOP);<br><br>}<br>// g.drawImage(imgTextOK[0],128,93,g.LEFT|g.TOP);<br>// g.drawImage(imgTextOK[0],89,93,g.LEFT|g.TOP);<br><br><br>// Image[] imgTextReset=new Image[1];<br>if(HorseMidlet.substate==3)<br>{<br>// imgTextReset = HorseMidlet.getImages("text_reseton", 1);<br>g.drawImage(imgTextReset1[0],89,108,g.LEFT|g.TOP);<br><br>}<br>else<br>{<br>// imgTextReset = HorseMidlet.getImages("text_resetoff", 1);<br>g.drawImage(imgTextReset2[0],89,108,g.LEFT|g.TOP);<br><br>}<br>// g.drawImage(imgTextReset[0],128,108,g.LEFT|g.TOP);<br>// g.drawImage(imgTextReset[0],89,108,g.LEFT|g.TOP);<br><br><br>// Image[] imgTextBack=new Image[1];<br>if(HorseMidlet.substate==4)<br>{<br>// imgTextBack = HorseMidlet.getImages("text_backon", 1);<br>g.drawImage(imgTextBack1[0],89,123,g.LEFT|g.TOP);<br>}<br>else<br>{<br>// imgTextBack = HorseMidlet.getImages("text_backoff", 1);<br>g.drawImage(imgTextBack2[0],89,123,g.LEFT|g.TOP);<br>}<br>// g.drawImage(imgTextBack[0],128,123,g.LEFT|g.TOP);<br>// g.drawImage(imgTextBack[0],89,123,g.LEFT|g.TOP);<br><br><br><br>break;<br><br>case HorseMidlet.GAME_STATE_RACING:<br>drawAnimation(g);<br>g.setColor(127,0,0);<br>// g.drawString(Long.toString(Runtime.getRuntime().totalMemory()),10<br>,10,g.TOP|g.LEFT);<br>// g.drawString(Long.toString(Runtime.getRuntime().freeMemory()),10,3<br>0,g.TOP|g.LEFT);<br><br>break;<br>case HorseMidlet.GAME_STATE_RACINGEND:<br>drawAnimation(g);<br>Image[] imgWin=new Image[1];<br>imgWin=HorseMidlet.getImages("win",1);<br>// g.drawImage(imgWin[0],40,20,g.LEFT|g.TOP);<br>g.drawImage(imgWin[0],20,20,g.LEFT|g.TOP);<br><br>int i,gold,goldi,silver,silveri,goldbonus=0,silverbonus;<br>gold=myHorseRacing.xHorsePos[0];<br>goldi=0;<br><br>for(i=1;i&lt;8;i++)<br>{<br>if(gold<myhorseracing.xhorsepos[i])<br> { gold=myHorseRacing.xHorsePos[i];goldi=i;}<br>}<br>silveri=-1;<br>silver=-1;<br>for(i=0;i&lt;7;i++)<br>{<br>if(goldi==i)continue;<br>if(silveri==-1||silver<myhorseracing.xhorsepos[i])<br> { silver=myHorseRacing.xHorsePos[i];silveri=i;}<br>}<br><br>//draw number<br>g.setColor(200,0,0);<br>/* g.drawChars(myHorseRacing.horses[goldi].m_HorseName,0,3,61,61,1);<br>g.drawString(java.lang.Integer.toString(myHorseRacing.horses[goldi].m_<br>No),70,64,0);<br><br>g.drawChars(myHorseRacing.horses[silveri].m_HorseName,0,3,61,113,1);<br>g.drawString(java.lang.Integer.toString(myHorseRacing.horses[silveri].<br>m_No),70,116,0);<br>*/<br>g.drawChars(myHorseRacing.horses[goldi].m_HorseName,0,3,41,61,1);<br>g.drawString(java.lang.Integer.toString(myHorseRacing.horses[goldi].m_No),<br>52,75,1);<br><br>g.drawChars(myHorseRacing.horses[silveri].m_HorseName,0,3,41,113,1);<br>g.drawString(java.lang.Integer.toString(myHorseRacing.horses[silveri].m_No<br>),52,127,1);<br><br><br>//calculate the bonus<br>if(HorseMidlet.myhorse.m_No&lt;9)<br>{//bingo,Youself got the gold/silver<br>if(HorseMidlet.myhorse.m_No==goldi)<br>HorseMidlet.myhorse.m_golds++;<br>else<br>if(HorseMidlet.myhorse.m_No==silveri)<br>HorseMidlet.myhorse.m_silvers++;<br>}<br><br>if(HorseMidlet.firstlot_no==goldi)//First Lot got gold<br>{<br>if(HorseMidlet.myhorse.m_No==HorseMidlet.firstlot_no)<br>goldbonus=HorseMidlet.MONEY_GOLD_MUL_M*HorseMidlet.fir<br>stlot_money;<br>else<br>goldbonus=HorseMidlet.MONEY_GOLD_MUL*HorseMidlet.first<br>lot_money;<br>}<br>else<br>if(HorseMidlet.secondlot_no==goldi)//Second Lot got gold<br>{<br>if(HorseMidlet.myhorse.m_No==HorseMidlet.secondlot_no)<br>goldbonus=HorseMidlet.MONEY_GOLD_MUL_M*HorseMidlet.secondlot_m<br>oney;<br>else<br>goldbonus=HorseMidlet.MONEY_GOLD_MUL*HorseMidlet.secondlot_mon<br>ey;<br>}<br>else goldbonus=0;<br><br>if(HorseMidlet.firstlot_no==silveri)//First Lot got gold<br>{<br>if(HorseMidlet.myhorse.m_No==HorseMidlet.firstlot_no)<br>silverbonus=HorseMidlet.MONEY_SILVER_MUL_M*HorseMidlet<br>.firstlot_money;<br>else<br>silverbonus=HorseMidlet.MONEY_SILVER_MUL*HorseMidlet.f<br>irstlot_money;<br>}<br>else<br>if(HorseMidlet.secondlot_no==silveri)//Second Lot got gold<br>{<br>if(HorseMidlet.myhorse.m_No==HorseMidlet.secondlot_no)<br>silverbonus=HorseMidlet.MONEY_SILVER_MUL_M*HorseMidlet.secondl<br>ot_money;<br>else<br>silverbonus=HorseMidlet.MONEY_SILVER_MUL*HorseMidlet.secondlot<br>_money;<br>}<br>else silverbonus=0;<br><br>//draw the bonus<br>// g.drawString(java.lang.Integer.toString(goldbonus),110,75,1);<br>// g.drawString(java.lang.Integer.toString(silverbonus),110,127,1);<br>g.drawString(java.lang.Integer.toString(goldbonus),93,75,1);<br>g.drawString(java.lang.Integer.toString(silverbonus),93,127,1);<br><br><br><br>if(HorseMidlet.myhorse.m_No&lt;9)<br>{<br>Random rand=new Random();<br>if((rand.nextInt()%100)&gt;HorseMidlet.MATCH_WOUND_RATIO)<br>{<br>HorseMidlet.myhorse.m_HorseHealth-=rand.nextInt()%HorseMidle<br>t.WOUND_MAX;<br>}<br>}<br>HorseMidlet.mytotalmoney+=goldbonus+silverbonus;<br>stop();//stop the animation<br>break;<br>/*<br>case HorseMidlet.GAME_STATE_TRAINING:<br>g.setColor(255,180,0);<br>g.fillRect(0,0,getCanvasWidth(),getCanvasHeight());<br><br>g.drawImage(HorseMidlet.imgTrainTop[0],10,10,g.LEFT|g.TOP);<br>g.drawImage(HorseMidlet.imgTrainBack[0],10,26,g.LEFT|g.TOP);<br><br><br><br>g.drawImage(HorseMidlet.imgTextShort[0],10,130,g.LEFT|g.TOP);<br>g.drawImage(HorseMidlet.imgTextLong[0],40,130,g.LEFT|g.TOP);<br>g.drawImage(HorseMidlet.imgTextRst[0],70,130,g.LEFT|g.TOP);<br>g.drawImage(HorseMidlet.imgTextBackMenu_off[0],100,130,g.LEFT|g.TOP);<br><br><br>if(HorseMidlet.substate==0)<br>g.drawImage(HorseMidlet.imgTextShort[1],10,130,g.LEFT|g.TOP);<br>else if(HorseMidlet.substate==1)<br>g.drawImage(HorseMidlet.imgTextLong[1],40,130,g.LEFT|g.TOP);<br>else if(HorseMidlet.substate==2)<br>g.drawImage(HorseMidlet.imgTextRst[1],70,130,g.LEFT|g.TOP);<br>else if(HorseMidlet.substate==3)<br>g.drawImage(HorseMidlet.imgTextBackMenu[0],100,130,g.LEFT|g.TOP);<br><br>break;<br>case HorseMidlet.GAME_STATE_TRAINING_SHORT:<br>g.setColor(255,180,0);<br>g.fillRect(0,0,getCanvasWidth(),getCanvasHeight());<br><br>g.drawImage(HorseMidlet.imgTrainTop[0],10,10,g.LEFT|g.TOP);<br>g.drawImage(HorseMidlet.imgTrainRunning[0],10,26,g.LEFT|g.TOP)<br>;<br><br>ReadyToSleep++;<br>if(ReadyToSleep==1)<br>{<br>repaint();<br><br>}<br>else if(ReadyToSleep==2) {<br>ReadyToSleep=0;<br><br>try<br>{<br><br>Thread.sleep(3000);<br>HorseMidlet.gamestate=HorseMidlet.GAME_STATE_TRAINING;<br><br>repaint();<br><br>}<br>catch(InterruptedException ie)<br>{<br>System.out.println(ie.toString());<br>}<br>}<br><br><br>break;<br><br>case HorseMidlet.GAME_STATE_TRAINING_LONG:<br>g.setColor(255,180,0);<br>g.fillRect(0,0,getCanvasWidth(),getCanvasHeight());<br><br>g.drawImage(HorseMidlet.imgTrainTop[0],10,10,g.LEFT|g.TOP<br>);<br>g.drawImage(HorseMidlet.imgTrainRunning[0],10,26,g.LEFT|g.<br>TOP);<br>ReadyToSleep++;<br>if(ReadyToSleep==1)<br>{<br>repaint();<br><br>}<br>else if(ReadyToSleep==2) {<br>ReadyToSleep=0;<br><br>try<br>{<br><br>Thread.sleep(3000);<br>HorseMidlet.gamestate=HorseMidlet.GAME_STATE_TRAINING;<br><br>repaint();<br><br>}<br>catch(InterruptedException ie)<br>{<br>System.out.println(ie.toString());<br>}<br>}<br><br>break;<br>case HorseMidlet.GAME_STATE_TRAINING_REST:<br>g.setColor(255,180,0);<br>g.fillRect(0,0,getCanvasWidth(),getCanvasHeight());<br><br>g.drawImage(HorseMidlet.imgTrainTop[0],10,10,g.LEFT|g.TOP);<br><br>g.drawImage(HorseMidlet.imgTrainRest[0],10,26,g.LEFT|g.TOP);<br><br><br>ReadyToSleep++;<br>if(ReadyToSleep==1)<br>{<br>repaint();<br><br>}<br>else if(ReadyToSleep==2) {<br>ReadyToSleep=0;<br><br>try<br>{<br><br>Thread.sleep(3000);<br>HorseMidlet.gamestate=HorseMidlet.GAME_STATE_TRAINING;<br><br>repaint();<br><br>}<br>catch(InterruptedException ie)<br>{<br>System.out.println(ie.toString());<br>}<br>}<br><br><br>break;<br>*/<br>}<br>}<br><br>private void drawAnimation(Graphics gr)<br>{<br>Graphics g=gr;<br>if(this.isDoubleBuffered())<br>{<br>g=graphics;<br>}<br><br>try<br>{<br>myHorseRacing.setFrame();<br>myHorseRacing.draw(g);<br>gr.drawImage(buffer,0,0,g.TOP|g.LEFT);<br><br>}<br>catch(Exception e)<br>{<br>System.out.println("drawAnimation Error: "+e.toString());<br>}<br>}<br><br>public void commandAction(Command c, Displayable d)<br>{<br>//if any Exit key is pressed then exit<br>if(c==exit)<br>{<br>midlet.exitMidlet();<br>}<br>// else if(c==memory)<br>else if (c == newGame)<br>{<br>// midlet.startApp();<br>HorseMidlet.gamestate=HorseMidlet.GAME_STATE_START;<br>HorseMidlet.substate=0;<br><br>HorseMidlet.difficulty=10;<br>// HorseMidlet.gamestate=0;<br>HorseMidlet.substate=0;<br>HorseMidlet.mytotalmoney=1000;<br>HorseMidlet.firstlot_no=0;<br>HorseMidlet.firstlot_money=50;<br>HorseMidlet.secondlot_no=1;<br>HorseMidlet.secondlot_money=50;<br><br>// HorseMidlet.myhorse=new HorseX(30,40,50,9);<br>myHorseRacing.init();<br><br>/* imgMenu=new Image[1];<br>imgDot= new Image[1];<br><br>imgMenu=HorseMidlet.getImages("menu",1);<br>System.out.println("Free memory: MENU"+Runtime.getRuntime().freeMemory()<br>);<br>imgDot=HorseMidlet.getImages("bluedot",1);<br>System.out.println("Free memory: BLUEDOT"+Runtime.getRuntime().freeMemor<br>y());*/<br><br>stop();<br>// sumTemp = 1;<br>repaint();<br>// c = null;<br>}<br>}<br>protected void keyPressed(int keyCode)<br>{<br>// can't continue playing until the player restarts<br><br><br>int gameAction = getGameAction(keyCode);<br><br>switch (gameAction)<br>{<br>case FIRE:<br>if (HorseMidlet.gamestate==HorseMidlet.GAME_STATE_START)<br>{<br>if(HorseMidlet.substate==0)<br>{<br>HorseMidlet.gamestate=HorseMidlet.GAME_STATE_LOT;<br>HorseMidlet.mytotalmoney-=HorseMidlet.firstlot_money;<br>}<br>else if(HorseMidlet.substate==1)//introduce<br>{<br>HorseMidlet.gamestate=HorseMidlet.GAME_STATE_INTRO;<br>Intro_pos=0;<br>HorseMidlet.substate=0;<br>}<br>else if(HorseMidlet.substate==2)//exit<br>midlet.exitMidlet();<br><br>}<br>else if (HorseMidlet.gamestate==HorseMidlet.GAME_STATE_INTRO)<br>{<br>HorseMidlet.gamestate=HorseMidlet.GAME_STATE_START;<br>HorseMidlet.substate=0;<br><br>}<br>else if (HorseMidlet.gamestate==HorseMidlet.GAME_STATE_RACINGEND)<br><br>{<br>myHorseRacing.init();<br><br>HorseMidlet.gamestate=HorseMidlet.GAME_STATE_LOT;<br>HorseMidlet.mytotalmoney-=HorseMidlet.firstlot_money;<br>HorseMidlet.substate=0;<br><br>}<br><br>else if (HorseMidlet.gamestate==HorseMidlet.GAME_STATE_LOT)<br>{<br><br>if(HorseMidlet.substate==2)<br>{<br>HorseMidlet.gamestate=HorseMidlet.GAME_STATE_RACING;<br>HorseMidlet.horseruningspeed=HorseMidlet.MAX_SPEED;<br>HorseMidlet.screenscroll=0;<br>HorseMidlet.trainingtime=0;<br>HorseMidlet.beginwait=0;<br>HorseMidlet.showbeginbar=1; //show it<br>HorseMidlet.racingend=-1;//just begin<br>start();//start a animation thread;<br>}<br>if(HorseMidlet.substate&lt;2)<br>HorseMidlet.substate++;<br>if(HorseMidlet.substate==1)<br>{<br>HorseMidlet.secondlot_money=HorseMidlet.BIT_LOT_MONEY;<br>HorseMidlet.mytotalmoney-=HorseMidlet.secondlot_money;<br>HorseMidlet.secondlot_no=HorseMidlet.firstlot_no+1;<br>if(HorseMidlet.secondlot_no&gt;7)<br>HorseMidlet.secondlot_no=0;<br>}<br><br>if(HorseMidlet.substate==3)//reset<br>{<br>HorseMidlet.mytotalmoney= HorseMidlet.mytotalmoney+<br>HorseMidlet.firstlot_money+<br>HorseMidlet.secondlot_money-<br>HorseMidlet.BIT_LOT_MONEY;<br>HorseMidlet.firstlot_money=HorseMidlet.BIT_LOT_MONEY;<br>HorseMidlet.firstlot_no=0;<br>HorseMidlet.substate=0;<br>}<br>if(HorseMidlet.substate==4)//back<br>{<br>HorseMidlet.mytotalmoney= HorseMidlet.mytotalmoney+<br>HorseMidlet.firstlot_money+<br>HorseMidlet.secondlot_money;<br>HorseMidlet.firstlot_money=HorseMidlet.BIT_LOT_MONEY;<br>HorseMidlet.firstlot_no=0;<br>HorseMidlet.gamestate=HorseMidlet.GAME_STATE_START;<br>HorseMidlet.substate=0;<br>}<br><br>}<br>else if (HorseMidlet.gamestate==HorseMidlet.GAME_STATE_TRAINING)<br>{<br>if(HorseMidlet.substate==0)<br>HorseMidlet.gamestate=HorseMidlet.GAME_STATE_TRAINING_SHORT;<br>else if(HorseMidlet.substate==1)<br>HorseMidlet.gamestate=HorseMidlet.GAME_STATE_TRAINING_LONG;<br>else if(HorseMidlet.substate==2)<br>HorseMidlet.gamestate=HorseMidlet.GAME_STATE_TRAINING_REST;<br>else<br>{<br>HorseMidlet.gamestate = HorseMidlet.GAME_STATE_START;<br>HorseMidlet.substate=0;<br>}<br><br>}<br><br>sumTemp = 0;<br><br>break;<br><br>case RIGHT:<br>if (HorseMidlet.gamestate==HorseMidlet.GAME_STATE_LOT)<br>{<br>if (HorseMidlet.substate == 0) { //the first lot<br>if (lot_select == 0) {<br>HorseMidlet.firstlot_no++;<br>if (HorseMidlet.firstlot_no &gt; 7)<br>HorseMidlet.firstlot_no = 0;<br>}<br>else {<br>if (HorseMidlet.mytotalmoney &gt;= HorseMidlet.BIT_LOT_MONEY) {<br><br>HorseMidlet.firstlot_money += HorseMidlet.BIT_LOT_MONEY;<br>HorseMidlet.mytotalmoney -= HorseMidlet.BIT_LOT_MONEY;<br>}<br>}<br><br>}<br>if (HorseMidlet.substate == 1) { //the second lot<br>if (lot_select == 0) {<br>HorseMidlet.secondlot_no++;<br>if (HorseMidlet.secondlot_no == HorseMidlet.firstlot_no)<br>HorseMidlet.secondlot_no++;<br>if (HorseMidlet.secondlot_no &gt; 7) {<br>HorseMidlet.secondlot_no = 0;<br>if (HorseMidlet.secondlot_no == HorseMidlet.firstlot_no)<br>HorseMidlet.secondlot_no++;<br><br>}<br>}<br>else {<br>if (HorseMidlet.mytotalmoney &gt;= HorseMidlet.BIT_LOT_MONEY) {<br><br>HorseMidlet.secondlot_money += HorseMidlet.BIT_LOT_MONEY;<br>HorseMidlet.mytotalmoney -= HorseMidlet.BIT_LOT_MONEY;<br>}<br>}<br><br>}<br>}<br>else if (HorseMidlet.gamestate==HorseMidlet.GAME_STATE_TRAINING)<br>{<br>HorseMidlet.substate=(HorseMidlet.substate+1)%4;<br><br>}<br><br>break;<br><br>case DOWN:<br>if (HorseMidlet.gamestate==HorseMidlet.GAME_STATE_START)<br>{<br>HorseMidlet.substate++;<br>if(HorseMidlet.substate&gt;=3)<br>HorseMidlet.substate=0;<br>// repaint();<br><br>}<br>else if (HorseMidlet.gamestate==HorseMidlet.GAME_STATE_LOT)<br>{<br>if(HorseMidlet.substate&gt;=2)<br>{<br>HorseMidlet.substate++;<br>if(HorseMidlet.substate&gt;4)<br>HorseMidlet.substate=2;<br>}<br>else<br>{<br>if(lot_select==0)<br>lot_select=1;<br>else<br>lot_select=0;<br><br>}<br>}<br><br><br><br>break;<br><br>case LEFT:<br><br>if (HorseMidlet.gamestate==HorseMidlet.GAME_STATE_LOT)<br>{<br>if (HorseMidlet.substate == 0) { //the first lot<br>if (lot_select == 0) {<br>HorseMidlet.firstlot_no--;<br>if (HorseMidlet.firstlot_no &lt;0 )<br>HorseMidlet.firstlot_no = 7;<br>}<br>else {<br>if (HorseMidlet.firstlot_money &gt; HorseMidlet.BIT_LOT_MONEY) {<br><br>HorseMidlet.firstlot_money -= HorseMidlet.BIT_LOT_MONEY;<br>HorseMidlet.mytotalmoney += HorseMidlet.BIT_LOT_MONEY;<br>}<br>}<br><br>}<br>if (HorseMidlet.substate == 1) { //the second lot<br>if (lot_select == 0) {<br>HorseMidlet.secondlot_no--;<br>if (HorseMidlet.secondlot_no == HorseMidlet.firstlot_no)<br>HorseMidlet.secondlot_no--;<br>if (HorseMidlet.secondlot_no &lt;0) {<br>HorseMidlet.secondlot_no = 7;<br>if (HorseMidlet.secondlot_no == HorseMidlet.firstlot_no)<br>HorseMidlet.secondlot_no--;<br><br>}<br>}<br>else {<br>if (HorseMidlet.secondlot_money &gt; HorseMidlet.BIT_LOT_MONEY)&nbsp;<br>{<br>HorseMidlet.secondlot_money -= HorseMidlet.BIT_LOT_MONEY;<br>HorseMidlet.mytotalmoney += HorseMidlet.BIT_LOT_MONEY;<br>}<br>}<br><br>}<br>}<br>else if (HorseMidlet.gamestate==HorseMidlet.GAME_STATE_TRAINING)<br>{<br>HorseMidlet.substate=(HorseMidlet.substate+3)%4;<br><br>}<br><br><br><br>break;<br><br>case UP:<br>if (HorseMidlet.gamestate==HorseMidlet.GAME_STATE_START)<br>{<br>HorseMidlet.substate--;<br>if(HorseMidlet.substate&lt;0)<br>HorseMidlet.substate=2;<br>}<br>else if (HorseMidlet.gamestate==HorseMidlet.GAME_STATE_LOT)<br>{<br>if(HorseMidlet.substate&gt;=2)<br>{<br>HorseMidlet.substate--;<br>if(HorseMidlet.substate&lt;2)<br>HorseMidlet.substate=4;<br>}<br>else<br>{<br>if(lot_select==0)<br>lot_select=1;<br>else<br>lot_select=0;<br>}<br><br>}<br>repaint();<br><br>break;<br><br>default:<br>break;<br>}<br>repaint();<br>}<br><br><br>}<br><br><br><br><br><br><br><br><br><br>package HorseClub;<br><br><br>import javax.microedition.lcdui.*;<br><br>public class RaceGround{<br><br>private static int imageWidth, imageHeight;<br>private static int tileWidth, tileHeight;<br>private static int imageSkyWidth, imageSkyHeight;<br>private static int tileSkyWidth, tileSkyHeight;<br>private static int canvasWidth, canvasHeight;<br>private Image[] images;<br>private final String BACKGROUND_NAME="raceground";<br>private final int BACKGROUND_FRAMES=1;<br>private final String SKY_NAME="racesky";<br>private final int SKY_FRAMES=1;<br><br>private Image[] imgTile=new Image[BACKGROUND_FRAMES];<br>private Image[] imgSkyTile=new Image[SKY_FRAMES];<br><br>private static Image imgBackground;<br>private static Image imgSky;<br>private static int xBackground, yBackground,xSky;<br>int yStart=30;<br>int ySkyStart=0;<br><br><br>public RaceGround()<br>{<br><br>// load the images from the .jar<br>imgTile=getImages(BACKGROUND_NAME,BACKGROUND_FRAMES);<br>imgSkyTile=getImages(SKY_NAME,SKY_FRAMES);<br><br>// set the canvas measurements to local class variables.<br>canvasWidth=(HorseCanvas.getCanvasWidth());<br>canvasHeight=(HorseCanvas.getCanvasHeight());<br><br>//prepare the background paras<br>// all character frame images are assumed<br>// to be the same height and width<br>tileWidth=imgTile[0].getWidth();<br>tileHeight=imgTile[0].getHeight();<br><br>// set the background image dimensions<br>imageWidth=((canvasWidth/tileWidth)*tileWidth)+(tileWidth*2);<br>imageHeight=tileHeight;//((canvasWidth/tileHeight)*tileHeight)+tileHeight;<br><br><br><br>//prepare the sky paras<br>tileSkyWidth=imgSkyTile[0].getWidth();<br>tileSkyHeight=imgSkyTile[0].getHeight();<br><br>// set the background image dimensions<br>imageSkyWidth=((canvasWidth/tileSkyWidth)*tileSkyWidth)+(tileSkyWidth*2);<br><br>imageSkyHeight=tileSkyHeight;<br><br><br>init();<br><br>}<br>public void init()<br>{<br>xBackground=0;<br>yBackground=-tileHeight;<br>xSky=0;<br>ySkyStart=0;<br>createImage();<br>createSkyImage();<br>setImage();<br><br><br>}<br>public Image getImage(){return imgBackground;}<br>public Image getSkyImage(){return imgSky;}<br><br><br>public void draw(Graphics g)<br>{<br>g.drawImage(getImage(),xBackground,yStart,g.LEFT|g.TOP);<br>g.drawImage(getSkyImage(),xSky,ySkyStart,g.LEFT|g.TOP);<br>}<br><br>public void setPosition(int offset)<br>{<br>//move the background to provide animation of moving landscape.<br>boolean reset=false;<br><br>// if the image exceeds the x-axis then reset it<br>// and set the starting point for the next row in the image array<br>// set the redraw flag for redrawing the image<br>xBackground=xBackground-offset;<br>if(xBackground&lt;=-tileWidth)<br>{<br>xBackground=0;<br>reset=true;<br>}<br>xSky=xSky-1;<br>if(xSky&lt;=-tileSkyWidth)<br>{<br>xSky=0;<br>reset=true;<br>}<br><br><br>// if the images exceeds the y-axis then reset it<br>// and set the stating point for the next column in the image array<br>// set the redraw flag for redrawing the image<br>//if(++yBackground==0)<br>//{<br>// yBackground=-tileHeight;<br>// if(--xStart&lt;0)<br>// {<br>// xStart=9;<br>// }<br>// reset=true;<br>//}<br><br>// redraw the background image if reset=true<br>if(reset)<br>{<br>// setImage();<br>}<br>}<br><br>private static void createImage()<br>{<br>// allocate memory to store the onscreen background image.<br>// assuming all tiles are the same size, make the buffer<br>// the screen size plus one row and column.<br>imgBackground=Image.createImage(imageWidth, imageHeight);<br>}<br><br>private static void createSkyImage()<br>{<br>// allocate memory to store the onscreen background image.<br>// assuming all tiles are the same size, make the buffer<br>// the screen size plus one row and column.<br>imgSky=Image.createImage(imageSkyWidth, imageSkyHeight);<br>}<br><br><br>public void setImage()<br>{<br>Graphics g = imgBackground.getGraphics();<br>Graphics gSky = imgSky.getGraphics();<br><br>int currentWidth=0;<br>int currentHeight=(imageHeight-tileHeight);<br><br>// draw the tiles within the bounds of the allocated image buffer<br>// draw from the starting from the current position within the image array<br>.<br>while (currentHeight&gt;=0)<br>{<br>while (currentWidth<imagewidth)<br> {<br>g.drawImage(imgTile[0],currentWidth,currentHeight,g.LEFT | g.TOP);<br>currentWidth+=tileWidth;<br>}<br><br>currentWidth=0;<br>currentHeight-=tileHeight;<br>}<br><br>//Title the Sky<br><br>currentWidth=0;<br>currentHeight=(imageSkyHeight-tileSkyHeight);<br><br>while (currentHeight&gt;=0)<br>{<br>while (currentWidth<imagewidth)<br> {<br>gSky.drawImage(imgSkyTile[0],currentWidth,currentHeight,g.LEFT | g.TOP);<br><br>currentWidth+=tileSkyWidth;<br>}<br><br>currentWidth=0;<br>currentHeight-=tileSkyHeight;<br>}<br><br><br>}<br><br>private Image[] getImages(String imgName, int frames)<br>{<br>return HorseMidlet.getImages(imgName, frames);<br>}<br>}<br><img src ="http://www.blogjava.net/yeiwei/aggbug/107885.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yeiwei/" target="_blank">圣域飞侠</a> 2007-04-02 10:46 <a href="http://www.blogjava.net/yeiwei/archive/2007/04/02/107885.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>看看你的密码</title><link>http://www.blogjava.net/yeiwei/archive/2007/03/30/107453.html</link><dc:creator>圣域飞侠</dc:creator><author>圣域飞侠</author><pubDate>Fri, 30 Mar 2007 04:00:00 GMT</pubDate><guid>http://www.blogjava.net/yeiwei/archive/2007/03/30/107453.html</guid><wfw:comment>http://www.blogjava.net/yeiwei/comments/107453.html</wfw:comment><comments>http://www.blogjava.net/yeiwei/archive/2007/03/30/107453.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yeiwei/comments/commentRss/107453.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yeiwei/services/trackbacks/107453.html</trackback:ping><description><![CDATA[<font face=宋体>A 会选用生日或自家电话号码来当密码的人，其实是很好搞定的爱人，不难追，挑战性也不强，因为他（她）心里在打什么主意，相处一段时间，就可以掌握到八九分，剩下那一两分，也是虽不中，亦不远矣。所以这类人要是有爱情走私或是搞鬼，很快就会被爱人发现到一些蛛丝马迹。<br><br>　　B 这类爱人戒心很重，所以建立在二人情感关系上的信任，将是最重要的关键。喜欢观察对方，甚至出些测试来考验对方，不时考虑双方的适合程度，如果没有得到信任，两人的关系就无法有进一步的突破，你也不会是他（她）想要共度一生的伴侣。<br><br>　　C 这类人变化没有规则可言，连他（她）自己都无法控制。要讨好这种爱人，是高难度的挑战，因为连他（她）都不知要的到底是什么，自己都头痛，爱人当然更头痛，今天适用的招数，明天可能就失效了。所以要对付这种爱人，最好的对策就是以不变应万变，管他（她）如何变，反正总有一天又会变回来，而你的不变，就巧妙地创造了安全感。<br><br>　　D 这类人内心较为复杂，想得很多，爱变也喜欢变，老是会想如何让人猜不透。想要追上他（她），最佳的方法，是有时要能一针见血，掌握对方的想法；有时即使知道，也是要装傻一下，让他们有点成就感，又不会觉得你太蠢，总之欲擒故纵就对了。如果你还有本事，能在下半生常常出点花招，使他（她）猜不透你的想法，那你就成功大半了。</font><img src ="http://www.blogjava.net/yeiwei/aggbug/107453.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yeiwei/" target="_blank">圣域飞侠</a> 2007-03-30 12:00 <a href="http://www.blogjava.net/yeiwei/archive/2007/03/30/107453.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C#和ASP.Net面试题目集锦</title><link>http://www.blogjava.net/yeiwei/archive/2007/03/30/107439.html</link><dc:creator>圣域飞侠</dc:creator><author>圣域飞侠</author><pubDate>Fri, 30 Mar 2007 03:35:00 GMT</pubDate><guid>http://www.blogjava.net/yeiwei/archive/2007/03/30/107439.html</guid><wfw:comment>http://www.blogjava.net/yeiwei/comments/107439.html</wfw:comment><comments>http://www.blogjava.net/yeiwei/archive/2007/03/30/107439.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yeiwei/comments/commentRss/107439.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yeiwei/services/trackbacks/107439.html</trackback:ping><description><![CDATA[1.有哪几种方法可以实现一个类存取另外一个类的成员函数及属性,并请举列来加以说明和分析.<br>2.A类是B类的基类,并且都有自己的构造,析构函数,请举例证明B类从实例化到消亡过程中构造,析构函数的执行过程.请附code<br>3.什么叫应用程序域？什么是受管制的代码？什么是强类型系统？<br>4..Net中读写数据库需要用到哪些类？他们的作用<br>5.ASP.net的身份验证方式有哪些？分别是什么原理？<br>6.解释一下UDDI、WSDL的意义及其作用。<br>7.常用的调用webservice方法有哪些？<br>8.讲一讲你理解的web service,在dot net framework中，怎么很好的结合xml?（讲概念就行了）<br>9.C#可否对内存进行直接的操作？(这可是个难点哦？要注意！）,如果能,如何操作;如果不能,为什么?<br>10.描述一下C#中索引器的实现过程，是否只能根据数字进行索引？
<p>1.面向对象的思想主要包括什么？<br>面向对象三大特征:继承,封套,多态.面相对象的思想也不是一句两句就能说清楚..主要思想就是减少代码重复,增大代码复用率..</p>
<p>2.什么是ASP.net中的用户控件<br>问这样的问题,一般是迷惑你.因为新手还是分不清楚用户控件和服务器控件(也称自定义控件)..用户控件一般用在内容多为静态,或者少许会改变的情况下..用的比较大..类似ASP中的include..但是功能要强大的多..</p>
<p>如果现有的 ASP.NET 服务器控件都不符合应用程序的特定要求，则可以创建封装所需功能的 Web 用户控件或 Web 自定义控件。这两种控件之间的主要区别在于设计时的易创建性与易用性。</p>
<p>Web 用户控件易于创建，但它们在高级方案中使用起来可能不太方便。开发 Web 用户控件的方式与开发 Web 窗体页的方式几乎完全相同。与 Web 窗体相似，用户控件可以在可视化设计器中创建，可以使用与 HTML 隔离的代码来编写，并且可以处理执行事件。但是，由于 Web 用户控件在运行时动态地进行编译，所以不能将它们添加到工具箱中，而且它们在添加到页面上时由简单的占位符标志符号来表示。如果您习惯于完全的 Visual Studio .NET 设计时支持（包括&#8220;属性&#8221;窗口和&#8220;设计&#8221;视图预览），这将会使 Web 用户控件使用起来更不方便。 此外，在应用程序之间共享用户控件的唯一方式是将一个单独的副本放入每个应用程序，因此如果对该控件作出了更改，将需要进行比较多的维护。</p>
<p>Web 自定义控件是编译的代码，这使得 Web 自定义控件更易于使用但更难于创建；Web 自定义控件必须使用代码来创建。一旦创建该控件，那么，您就可以将其添加到工具箱中，并在具有完全&#8220;属性&#8221;窗口支持和 ASP.NET 服务器控件的其他所有设计时功能的可视化设计器中显示该控件。此外，还可以在全局程序集缓存中安装 Web 自定义控件的单个副本，并在应用程序之间共享该副本，这将使维护变得更容易。有关更多信息，请参阅全局程序集缓存。<br>如果您的控件包含大量静态布局，用户控件则可能是较佳的选择。如果您的控件主要是动态生成的（例如数据绑定表的行、树视图的节点或选项卡 (TabControl) 控件的选项卡），自定义控件则可能是较佳的选择。</p>
<p>下表概述了这两种类型之间的主要区别：<br>Web 用户控件<br>1.难于创建<br>2.为使用可视化设计工具的使用者提供有限的支持<br>3. 每个应用程序中需要控件的一个单独副本<br>4. 不能添加到 Visual Studio 中的工具箱<br>5. 适用于静态布局<br>Web 自定义控件<br>1.易于创建<br>2. 为使用者提供完全的可视化设计工具支持<br>3. 仅在全局程序集缓存中需要控件的单个副本<br>4. 可以添加到 Visual Studio 中的工具箱<br>5. 适用于动态布局</p>
<p><br>3.什么叫应用程序域？什么是受管制的代码？什么是强类型系统？什么是装箱和拆箱？什么是重载？CTS、CLS和CLR分别作何解释？<br>这个需要当前描述了..东西太多..打字要打死了..找个比较简单的说说吧!<br>CTS:公共类型系统.主要是为了语言之间的进行标准化处理.<br>CLS:公共语言规范.主要是确保代码可以在任何语言中访问的最小标准集体<br>CLR:公共语言运行时.主要是管理代码..处理,加载代码,以及所有服务的代码</p>
<p>4.列举一下你所了解的XML技术及其应用<br>xml用于配置,用于保存静态数据类型.接触XML最多的是web Services..和config</p>
<p>5.值类型和引用类型的区别？写出C#的样例代码。<br>值类型是在内存中保存,引用类型是在内存中保存一副本.你在内存中可以有多个某种引用对象..但是值类型始终只有一个.<br>最常见的值类型就是static,struct;<br>例如:<br>static int aa = 1;//值类型<br>如果多个用户改变aa的值则,aa的值会以最后一个修改的记录为准.其他人的修改则会被冲掉.<br>引用类型,最能说明问题的就是实例化..你new出来的对象单独分配一个独立的内存..所以值不会互相冲突/</p>
<p>数据成员可以分静态变量、非静态变量两种. <br>&nbsp;静态成员：静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因为静态成员存在于内存,所以非静态成员可以直接访问类中静态的成员.<br>&nbsp;<br>&nbsp;非成静态员：所有没有加Static的成员都是非静态成员,当类被实例化之后,可以通过实例化的类名进行访问..非静态成员的生存期决定于该类的生存期..而静态成员则不存在生存期的概念,因为静态成员始终驻留在内容中..<br>&nbsp;<br>&nbsp;一个类中也可以包含静态成员和非静态成员,类中也包括静态构造函数和非静态构造函数..<br>&nbsp;<br>&nbsp;对于winApp来说,静态成员对于程序员本身省了很多事,而且因为静态成员驻留内存,在方法与方法之间传递共享数据的时候,所以静态成员成了我的首选..但是不要因为方便,大量使用,尤其是在内存紧张或者<br>&nbsp;用静态方法操作一些共享值的时候.或者要写多用户系统的时候,要慎之又慎.比如:<br>&nbsp;static int id = 0;<br>&nbsp;sql = "select * from table where id=" + id;l</p>
<p>6.ADO.net中常用的对象有哪些？分别描述一下。<br>Connection 数据库连接对象<br>Command 数据库命令<br>DataReader 数据读取器<br>DataSet 数据集</p>
<p>7.如何理解委托？<br>委托的概念,最好的说明就是事件.因为事件使用的就是委托.例如:this.Load += new System.EventHandler(this.Page_Load);这个就是使用了一个委托.<br>具体的用法请参考.我以前的帖子,设计猫鼠联动..</p>
<p>8.C#中的接口和类有什么异同。<br>类是方法功能的实现和集合,接口是规范类.约束类.<br>参考我的文章:http://lixianhuei.cnblogs.com/archive/2005/08/04/207123.html</p>
<p>9.。net中读写数据库需要用到哪些类？他们的作用<br>看第六题..答案差不多</p>
<p>10.UDP连接和TCP连接的异同。<br>这个说不清楚.</p>
<p>11.ASP.net的身份验证方式有哪些？分别是什么原理？<br>window验证:为每个用户开启window帐号,验证其身份.安全性较高.<br>forms验证:为每个登陆用户写入一个身份验证票据..在web使用最广的验证方式..灵活方便.</p>
<p>12.进程和线程分别怎么理解？<br>这个是新人最容易迷惑的东西..<br>进程:Process</p>
<p>13.什么是code-Behind技术。<br>新建一个VS.NET下的项目..看到ASPX,RESX和CS三个后缀的文件了吗??这个就是代码分离.实现了HTML代码和服务器代码分离.方便代码编写和整理.</p>
<p>14.活动目录的作用。<br>活动目录是window2000的最重要的功能.可以将用户信息全部集成起来,登陆以后可以访问多个不同的网络服务..没深入研究过.<br>查看一下帖子:http://www.ies.impu.edu.cn/resource/os/windowsx/WindowsGeneral/WinGeneral0008.htm</p>
<p>15..net中读写XML的类都归属于哪些命名空间？<br>System.XML类</p>
<p>16.解释一下UDDI、WSDL的意义及其作用。<br>解释不清楚了..又是一大块..</p>
<p>17.什么是SOAP,有哪些应用。<br>simple object access protocal,简单对象接受协议.以xml为基本编码结构,建立在已有通信协议上(如http,不过据说ms在搞最底层的架构在tcp/ip上的soap)的一种规范<br>是微软大力推广的Web Service使用的协议..</p>
<p>18.如何部署一个ASP.net页面。<br>不清楚问的什么意思...如果非要回答的话,就写一个带.aspx的后缀文件..然后安装IIS和FrameWork环境..浏览就好了.</p>
<p>19.如何理解.net中的垃圾回收机制。<br>垃圾回收体制如下:<br>如果发现内存不够,则垃圾回收器,将全部对象作为无效对象(被回收对象),然后先将全局变量,static,处于活动中的局部变量,以及当前CG指针指向的对象放入一个表中.然后<br>会搜索新列表中的对象所引用的对象.加入列表中,其他没有被加入列表的对象都会被回收.</p>
<p>20.常用的调用webservice方法有哪些？<br>我一般用的是WSDL..或者web引用..<br>&nbsp;<br>&nbsp;<br>&nbsp;</p>
<p>1.new有几种用法</p>
<p>第一种:new Class();</p>
<p>第二种:覆盖方法</p>
<p>public new XXXX(){}</p>
<p>第三种:new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。</p>
<p>2.如何把一个array复制到arrayList里</p>
<p>foreach( object o in array )arrayList.Add(o);</p>
<p>3.datagrid.datasouse可以连接什么数据源 [dataset,datatable,dataview]</p>
<p>dataset,datatable,dataview , IList</p>
<p>4.概述反射和序列化</p>
<p>反射:程序集包含模块，而模块包含类型，类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例，将类型绑定到现有对象，或从现有对象中获取类型。然后，可以调用类型的方法或访问其字段和属性</p>
<p>序列化:序列化是将对象转换为容易传输的格式的过程。例如，可以序列化一个对象，然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端，反序列化将从该流重新构造对象。</p>
<p>5.概述o/r mapping 的原理</p>
<p>利用反射，配置 将类于数据库表映射</p>
<p>6.类成员有( )种可访问形式</p>
<p>可访问形式？不懂。</p>
<p>可访问性：public ,protected ,private,internal</p>
<p>7.用sealed修饰的类有什么特点</p>
<p>sealed 修饰符用于防止从所修饰的类派生出其它类。如果一个密封类被指定为其他类的基类，则会发生编译时错误。</p>
<p>密封类不能同时为抽象类。</p>
<p>sealed 修饰符主要用于防止非有意的派生，但是它还能促使某些运行时优化。具体说来，由于密封类永远不会有任何派生类，所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。</p>
<p>8.列举ADO.NET中的五个主要对象，并简单描述</p>
<p>connection,command,dataReader,trans,dataset ...</p>
<p>9.执行下面代码后：</p>
<p>String strTemp ="abcdefg 某某某"；</p>
<p>Int i System.Text.Encoding.Default.GetBytes(strTemp).Length;</p>
<p>Int j = strTemp.Length;</p>
<p>问：i=(14 ) ；j=(11 )</p>
<p>i=(14 ) ；j=(11 ) 中文两个字节</p>
<p>10.C#中，string str = null 与 string str =""，请尽量用文字说明区别。(要点：说明详细的内存空间分配)</p>
<p>string str ="" 分配空间 </p>
<p>11.详述.NET里class和struct的异同！</p>
<p>class:放在 ? struct放在？</p>
<p>struct值传递</p>
<p>类与结构有很多相似之处：结构可以实现接口，并且可以具有与类相同的成员类型。然而，结构在几个重要方面不同于类：结构为值类型而不是引用类型，并且结构不支持继承。结构的值存储在&#8220;在堆栈上&#8221;或&#8220;内联&#8221;。细心的程序员有时可以通过聪明地使用结构来增强性能。</p>
<p>12.概述.NET里对 remoting 和 webservice 两项技术的理解和实际中的应用。</p>
<p>远程逻辑调用，remoing接口只能用在.net中</p>
<p>13.什么是code-behind技术</p>
<p>aspx and cs </p>
<p>14.概述三层结构体系</p>
<p>web/business/dataaccess</p>
<p>15.asp.net如何实现MVC模式，举例说明！</p>
<p>web/business/dataaccess</p>
<p>----------------------------------------------------------------------------------------------------------</p>
<p>1.面向对象的思想主要包括什么？</p>
<p>答:这个题范围太广,不知道说什么.</p>
<p>2.什么是ASP.net中的用户控件</p>
<p>答:用户控件就是.ascx扩展名的东西喽,可以拖到不同的页面中调用,以节省代码.比如登陆可能在多个页面上有,就可以做成用户控件,但是有一个问题就是用户控件拖到不同级别的目录下后里面的图片等的相对路径会变得不准确,需要自已写方法调整.</p>
<p>3.什么叫应用程序域？什么是受管制的代码？什么是强类型系统？什么是装箱和拆箱？什么是重载？CTS、CLS和CLR分别作何解释？</p>
<p>答:装箱就是把值类型转成引用类型,从MS IL角度看好像是boxing,没记错的话是把值从堆栈转到堆中.拆箱相反,重载就是指一个方法名同,参数个数不同,返回值可以相同的方法.CLR是通用语言运行时,其它的不清楚.</p>
<p>4.列举一下你所了解的XML技术及其应用</p>
<p>答:XML可是好东西,保存配置,站与站之间的交流,WEB SERVICE都要用它.</p>
<p>5.值类型和引用类型的区别？写出C#的样例代码。答:结构是值类型,类是引用类型,所以传结构就是值类型的应用啦,传对象或类就是引用类型的,这个不用多写了吧.</p>
<p>&nbsp;</p>
<p>6.ADO.net中常用的对象有哪些？分别描述一下。</p>
<p>答:connection command sqladapter dataset datatable dataview等等.写不完了.</p>
<p>7.如何理解委托？</p>
<p>答:据说相当于函数指针,定义了委托就可以在不调用原方法名称的情况下调用那个方法.</p>
<p>msdn2005中是这样解释的:</p>
<p>委托具有以下特点：</p>
<p>委托类似于 C++ 函数指针，但它是类型安全的。</p>
<p>委托允许将方法作为参数进行传递。</p>
<p>委托可用于定义回调方法。</p>
<p>委托可以链接在一起；例如，可以对一个事件调用多个方法。</p>
<p>方法不需要与委托签名精确匹配。有关更多信息，请参见协变和逆变。</p>
<p>C# 2.0 版引入了匿名方法的概念，此类方法允许将代码块作为参数传递，以代替单独定义的方法。</p>
<p>8.C#中的接口和类有什么异同。</p>
<p>答:这个异同可多了,要说清楚还真不容易.</p>
<p>9.。net中读写数据库需要用到哪些类？他们的作用</p>
<p>答:这个类自已可以写的啊,你是指基类吗?那configuration,sqlconnection,sqlcommand等都要用到.</p>
<p>10.UDP连接和TCP连接的异同。</p>
<p>答:前者只管传,不管数据到不到,无须建立连接.后者保证传输的数据准确,须要连结.</p>
<p>11.ASP.net的身份验证方式有哪些？分别是什么原理？答:form认证,windows集成认证等,原理不清楚.</p>
<p>&nbsp;</p>
<p>12.进程和线程分别怎么理解？</p>
<p>答:进程是老子,线程是儿子,没有老子就没有儿子,一个老子可以有多个儿子.一个儿子可以成为别人的儿子,一个老子也可以为别的老子生儿子.</p>
<p>13.什么是code-Behind技术。</p>
<p>答:代码分离,这是个明智的东西,像ASP这样混成一堆很不爽.或者可以理解成HTML代码写在前台,C#代码写在后台.当</p>
<p><br>&nbsp;</p>
<p>&nbsp;</p>
<p>ASP.NET面试的题目<br>1。请简要写出你对C#及ASP的认识。</p>
<p><br>2。怎么获得文件的当前路径（代码）</p>
<p>3。 请使用ADO。NET 写出数据库连接开始事务处理，即数据库连接（代码）<br>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://www.microsoft.com/china/MSDN/library/data/dataAccess/BestPractiCEs+forUsingADO.NET.mspx?mfr=true">http://www.microsoft.com/china/MSDN/library/data/dataAccess/BestPractiCEs+forUsingADO.NET.mspx?mfr=true</a><br><a href="http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/builddistapp/PerformanCE+COMparison+Transaction+Control.mspx?mfr=true">http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/builddistapp/PerformanCE+COMparison+Transaction+Control.mspx?mfr=true</a></p>
<p>4。在SQL语言中，如果要建立一个工资表包含职工号，姓名，职称。工资等字段。若要保证工资 字段 的取值不低于800元，最合适的实现方法是：<br>A。在创建工资表时为&#8221;工资&#8220;字段建立缺省<br>B。在创建工资表时为&#8221;工资&#8220;字段建立检查约束<br>C。在工资表建立一个触发器<br>D。为工资表数据输入编写一个程序进行控制</p>
<p>5。没有关键码序列（Q。G。M。Z。A。N。B。P。X。H。Y。S。L。T。K。E）<br>采用二路归并排序法进行排序，请写出第二趟归并后的结果？</p>
<p>6。创建一个新文本文件并向其写入一个字符串（代码）</p>
<p>7。请使用正则表达式验证电子邮件地址的合法性（代码）</p>
<p>8。如何设定DATAGRID中模板列里 下拉列表默然值，如何在编辑时，让其绑定另一个表的数据并自动讲当前值设为默认值</p>
<p>9。上机测试题目：用户管理中，用户验证，用户添加，用户删除功能，采用ACCESS数据库<br>（时间30分钟）</p>
<p><br>一、求2003年所有没有降雨的日期&nbsp;&nbsp; <br>结果集：日期<br>表名：t_rain&nbsp;&nbsp;&nbsp;&nbsp; 降雨记录<br>表结构：<br>fstartTimedatetime&nbsp; (有时间信息)&nbsp; 降雨开始时间<br>fendTimedatetime 降雨结束时间&nbsp; (可能跨日的)</p>
<p>二、问答题<br>1.三只猫三分钟内可以捉三只老鼠，一百只猫需要多久才能捉到一百只老鼠?<br>2.有两枚硬币，共值一元五角，其中一枚不是五角的硬币，请问两枚硬币的面值各是多少？<br>3.一个人购物共付了六元，零食比笔芯多五元，笔芯价格是多少？<br>4.有两人在路上走，年轻的是年长的儿子，但年长的不是年轻的父亲，年长的是谁？<br>5.一立方尺的洞里有多少垃圾？<br>6.一个男人和他遗孀的妹妹结婚是否合法？<br>7.一只猴子跌进三十尺深的井里，它每天朝上蹿三尺，但都滑下两尺，依照这个速度，猴子多少天后会蹿出井外？<br>8.抽屉里有黑白袜子各十只，如果你在黑暗中伸手入抽屉，最少要取出几只才一定会有一双颜色相同？<br>9.有三个苹果，你拿了两个，你共有多少个？<br>10.有人要赶火车，只有两分钟时间，但要走两里。如果第一里的速度是每小时三十里，第二里的速度应该是多少才能赶上这班火车？</p>
<p>三、分析：（除了答案，还需阐明思路）：<br>1、5个海盗抢到了100颗宝石，每一颗都一样的大小和价值连城。 <br>　　他们决定这么分： <br>　　1。抽签决定自己的号码（1，2，3，4，5） <br>　　2。首先，由1号提出分配方案，然后大家5人进行表决，当且仅当半数和超过半数的人同意时，按照他的提案进行分配，否则将被扔入大海喂鲨鱼。 <br>　　3。如果1号死后，再由2号提出分配方案，然后大家4人进行表决，当且仅当半数和超过半数的人同意时，按照他的提案进行分配，否则将被扔入大海喂鲨鱼。 <br>　　4。依次类推...... <br>问题：第一个海盗提出怎样的分配方案才能够使自己的收益最大化<br>条件：每个海盗都是很聪明的人，都能很理智的判断得失，从而做出选择。</p>
<p>5.有一张表，表名：Test<br>表结构：<br>&nbsp;&nbsp;&nbsp;&nbsp; id int<br>&nbsp;&nbsp;&nbsp;&nbsp; name varchar(20)<br>有以下数据：<br>&nbsp;&nbsp;&nbsp; [id]&nbsp;&nbsp;&nbsp; [name]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aaa<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bbb<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; aaa<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ccc<br>要求写一个查询语句，只显示[name]有重复的数据，没有重复的不显示出来。</p>
<p>&nbsp;</p>
<p><br>传入某个属性的set方法的隐含参数的名称是什么？<br>value，它的类型和属性所声名的类型相同。 <br>如何在C#中实现继承？<br>在类名后加上一个冒号，再加上基类的名称。 <br>C#支持多重继承么？<br>不支持。可以用接口来实现。 <br>被protected修饰的属性/方法在何处可以访问？<br>在继承或间接继承与这个类的子类中可以访问。 <br>私有成员会被继承么？<br>会，但是不能被访问。所以看上去他们似乎是不能被继承的，但实际上确实被继承了。 <br>请描述一下修饰符protected internal。 <br>被protected internal修饰的属性/方法只能在它的在同一个程序集（Assembly）中的子类被访问。 <br>C#提供一个默认的无参数构造函数，当我实现了另外一个有一个参数的构造函数时候，还想保留这个无参数的构造函数。这样我应该写几个构造函数？<br>两个，一旦你实现了一个构造函数，C#就不会再提供默认的构造函数了，所以需要手动实现那个无参数构造函数。 <br>C#中所有对象共同的基类是什么？<br>System.Object. <br>重载和覆写有什么区别？<br>重载提供了对一个方法签名的不同参数调用的实现。覆写提供了子类中改变父类方法行为的实现。 <br>在方法定义中，virtual有什么含意？ <br>被virtual修饰的方法可以被子类覆写。 <br>能够将非静态的方法覆写成静态方法么？<br>不能，覆写方法的签名必须与被覆写方法的签名保持一致，除了将virtual改为override。 <br>可以覆写私有的虚方法么？<br>不可以，甚至子类中无法访问父类中的私有方法。 <br>能够阻止某一个类被其他类继承么？ <br>可以，使用关键字sealed。 <br>能够实现允许某个类被继承，但不允许其中的某个方法被覆写么？ <br>可以，标记这个类为public，并标记这个方法为sealed。 <br>什么是抽象类（abstract class）？<br>一种不可以被实例化的类。抽象类中一般含有抽象方法，当然也可有具体实现。继承类只有实现过所有抽象类的抽象方法后才能被实例化。 <br>何时必须声明一个类为抽象类？ <br>当这个类中包含抽象方法时，或是该类并没有完全实现父类的抽象方法时。 <br>接口（interface）是什么？<br>只含有共有抽象方法（public abstract method）的类。这些方法必须在子类中被实现。 <br>为什么不能指定接口中方法的修饰符？ <br>接口中的方法用来定义对象之间通信的契约，指定接口中的方法为私有或保护没有意义。他们默认为公有方法。 <br>可以继承多个接口么？ <br>当然。 <br>那么如果这些接口中有重复的方法名称呢？ <br>这种情况中你可以决定如何实现。当然需要特别得小心。但是在编译环节是没有问题的。 <br>接口和抽象类的区别是什么？ <br>接口中所有方法必须是抽象的，并且不能指定方法的访问修饰符。抽象类中可以有方法的实现，也可以指定方法的访问修饰符。 <br>如何区别重载方法？ <br>不同的参数类型，不同的参数个数，不同的参数顺序。 <br>const和readonly有什么区别？<br>const关键字用来声明编译时常量，readonly用来声明运行时常量。 <br>System.String 和System.StringBuilder有什么区别？<br>System.String是不可变的字符串。System.StringBuilder存放了一个可变的字符串，并提供一些对这个字符串修改的方法 </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>1.new有几种用法</p>
<p>第一种:new Class();</p>
<p>第二种:覆盖方法</p>
<p>public new XXXX(){}</p>
<p>第三种:new 约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。</p>
<p>2.如何把一个array复制到arrayList里</p>
<p>foreach( object o in array )arrayList.Add(o);</p>
<p>3.datagrid.datasouse可以连接什么数据源 [dataset,datatable,dataview]</p>
<p>dataset,datatable,dataview , IList</p>
<p>4.概述反射和序列化</p>
<p>反射:程序集包含模块，而模块包含类型，类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例，将类型绑定到现有对象，或从现有对象中获取类型。然后，可以调用类型的方法或访问其字段和属性</p>
<p>序列化:序列化是将对象转换为容易传输的格式的过程。例如，可以序列化一个对象，然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端，反序列化将从该流重新构造对象。</p>
<p>5.概述o/r mapping 的原理</p>
<p>利用反射，配置 将类于数据库表映射</p>
<p>6.类成员有( )种可访问形式</p>
<p>可访问形式？不懂。</p>
<p>可访问性：public ,protected ,private,internal</p>
<p>7.用sealed修饰的类有什么特点</p>
<p>sealed 修饰符用于防止从所修饰的类派生出其它类。如果一个密封类被指定为其他类的基类，则会发生编译时错误。</p>
<p>密封类不能同时为抽象类。</p>
<p>sealed 修饰符主要用于防止非有意的派生，但是它还能促使某些运行时优化。具体说来，由于密封类永远不会有任何派生类，所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来处理。</p>
<p><br>8.列举ADO.NET中的五个主要对象，并简单描述</p>
<p>connection,command,dataReader,trans,dataset ...</p>
<p>9.执行下面代码后：</p>
<p>String strTemp ="abcdefg 某某某"；</p>
<p>Int i System.Text.Encoding.Default.GetBytes(strTemp).Length;</p>
<p>Int j = strTemp.Length;</p>
<p>问：i=(14 ) ；j=(11 )</p>
<p>i=(14 ) ；j=(11 ) 中文两个字节</p>
<p>10.C#中，string str = null 与 string str =""，请尽量用文字说明区别。(要点：说明详细的内存空间分配)</p>
<p>string str ="" 分配空间 </p>
<p>11.详述.NET里class和struct的异同！</p>
<p>class:放在 ? struct放在？</p>
<p>struct值传递</p>
<p>类与结构有很多相似之处：结构可以实现接口，并且可以具有与类相同的成员类型。然而，结构在几个重要方面不同于类：结构为值类型而不是引用类型，并且结构不支持继承。结构的值存储在&#8220;在堆栈上&#8221;或&#8220;内联&#8221;。细心的程序员有时可以通过聪明地使用结构来增强性能。</p>
<p>12.概述.NET里对 remoting 和 webservice 两项技术的理解和实际中的应用。</p>
<p>远程逻辑调用，remoing接口只能用在.net中</p>
<p>13.什么是code-behind技术</p>
<p>aspx and cs </p>
<p>14.概述三层结构体系</p>
<p>web/business/dataaccess</p>
<p>15.asp.net如何实现MVC模式，举例说明！</p>
<p>web/business/dataaccess</p>
<p>&nbsp;</p>
<p>1.面向对象的思想主要包括什么？</p>
<p>答:这个题范围太广,不知道说什么.</p>
<p>2.什么是ASP.net中的用户控件</p>
<p>答:用户控件就是.ascx扩展名的东西喽,可以拖到不同的页面中调用,以节省代码.比如登陆可能在多个页面上有,就可以做成用户控件,但是有一个问题就是用户控件拖到不同级别的目录下后里面的图片等的相对路径会变得不准确,需要自已写方法调整.</p>
<p>3.什么叫应用程序域？什么是受管制的代码？什么是强类型系统？什么是装箱和拆箱？什么是重载？CTS、CLS和CLR分别作何解释？</p>
<p>答:装箱就是把值类型转成引用类型,从MS IL角度看好像是boxing,没记错的话是把值从堆栈转到堆中.拆箱相反,重载就是指一个方法名同,参数个数不同,返回值可以相同的方法.CLR是通用语言运行时,其它的不清楚.</p>
<p>4.列举一下你所了解的XML技术及其应用<br>&nbsp;</p>
<p>答:XML可是好东西,保存配置,站与站之间的交流,WEB SERVICE都要用它.</p>
<p>5.值类型和引用类型的区别？写出C#的样例代码。</p>
<p>答:结构是值类型,类是引用类型,所以传结构就是值类型的应用啦,传对象或类就是引用类型的,这个不用多写了吧.</p>
<p>6.ADO.net中常用的对象有哪些？分别描述一下。</p>
<p>答:connection command sqladapter dataset datatable dataview等等.写不完了.</p>
<p>7.如何理解委托？</p>
<p>答:据说相当于函数指针,定义了委托就可以在不调用原方法名称的情况下调用那个方法.</p>
<p>msdn2005中是这样解释的:</p>
<p>委托具有以下特点：</p>
<p>委托类似于 C++ 函数指针，但它是类型安全的。</p>
<p>委托允许将方法作为参数进行传递。</p>
<p>委托可用于定义回调方法。</p>
<p>委托可以链接在一起；例如，可以对一个事件调用多个方法。</p>
<p>方法不需要与委托签名精确匹配。有关更多信息，请参见协变和逆变。</p>
<p>C# 2.0 版引入了匿名方法的概念，此类方法允许将代码块作为参数传递，以代替单独定义的方法。</p>
<p>8.C#中的接口和类有什么异同。</p>
<p>答:这个异同可多了,要说清楚还真不容易.</p>
<p>9.。net中读写数据库需要用到哪些类？他们的作用</p>
<p>答:这个类自已可以写的啊,你是指基类吗?那configuration,sqlconnection,sqlcommand等都要用到.</p>
<p>10.UDP连接和TCP连接的异同。</p>
<p>答:前者只管传,不管数据到不到,无须建立连接.后者保证传输的数据准确,须要连结.</p>
<p>11.ASP.net的身份验证方式有哪些？分别是什么原理？</p>
<p>答:form认证,windows集成认证等,原理不清楚.</p>
<p>12.进程和线程分别怎么理解？</p>
<p>答:进程是老子,线程是儿子,没有老子就没有儿子,一个老子可以有多个儿子.一个儿子可以成为别人的儿子,一个老子也可以为别的老子生儿子.</p>
<p>13.什么是code-Behind技术。</p>
<p>答:代码分离,这是个明智的东西,像ASP这样混成一堆很不爽.或者可以理解成HTML代码写在前台,C#代码写在后台.当然前台也有脚本,类的调用等,其实写在一起也是可以的.</p>
<p>14.活动目录的作用。</p>
<p>答:这个不明白.请明白的补充一下.</p>
<p>15..net中读写XML的类都归属于哪些命名空间？</p>
<p>答:System.Xml</p>
<p>我自已写的就不一定了,嘿嘿.</p>
<p>16.解释一下UDDI、WSDL的意义及其作用。</p>
<p>答:什么东西?</p>
<p>17.什么是SOAP,有哪些应用。</p>
<p>答:SOAP（Simple Object Access Protocol ）简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议，是一个基于XML的协议。使用SOAP，不用考虑任何特定的传输协议（最常用的还是HTTP协议），可以允许任何类型的对象或代码，在任何平台上，以任何一直语言相互通信。这种相互通信采用的是XML格式的消息,具体请看:http://playist.blogchina.com/2521621.html</p>
<p>18.如何部署一个ASP.net页面。</p>
<p>答:随便啦,想直接上传就直接上传,想打包成EXE就打包,看个人喜好.</p>
<p>19.如何理解.net中的垃圾回收机制。</p>
<p>答:GC?对象创建了总要清除啊,不然内存哪够用?</p>
<p>20.常用的调用webservice方法有哪些？</p>
<p>答:调用就调用,还有很多方法吗?</p>
<p>&nbsp;</p>
<p>.net笔试题</p>
<p><br>姓名：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 日期：</p>
<p>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 填空: (1)面向对象的语言具有________性、_________性、________性。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (2)能用foreach遍历访问的对象需要实现 ________________接口或声明________________方法的类型。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (3)列举ADO.net中的五个主要对象_______________、_____________、_______________、_______________、_________________。</p>
<p>2. 不定项选择：</p>
<p>(1) 以下叙述正确的是： </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A. 接口中可以有虚方法。&nbsp;&nbsp;&nbsp;&nbsp; B. 一个类可以实现多个接口。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C. 接口不能被实例化。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D. 接口中可以包含已实现的方法。</p>
<p>&nbsp;&nbsp; (2) 从数据库读取记录，你可能用到的方法有：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A. ExecuteNonQuery&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B. ExecuteScalar</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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; D. ExecuteReader</p>
<p>3. 简述 private、 protected、 public、 internal 修饰符的访问权限。</p>
<p><br>4. 写出一条Sql语句： 取出表A中第31到第40记录（SQLServer, 以自动增长的ID作为主键,&nbsp; 注意：ID可能不是连续的。）</p>
<p><br>5 .列举ASP.NET 页面之间传递值的几种方式。</p>
<p><br>6. 写出程序的输出结果</p>
<p>class Class1&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private string str = "Class1.str";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private int i = 0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static void StringConvert(string str)&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str = "string being converted.";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static void StringConvert(Class1 c)&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c.str = "string being converted.";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static void Add(int i)&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static void AddWithRef(ref int i)&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i++;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static void Main()&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i1 = 10;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i2 = 20;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string str = "str";<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Class1 c = new Class1();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add(i1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AddWithRef(ref i2);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Add(c.i);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StringConvert(str);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; StringConvert(c);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine(i1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine(i2);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine(c.i);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine(str);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine(c.str);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp; <br>&nbsp;&nbsp;&nbsp; }</p>
<p><br>7.写出程序的输出结果</p>
<p>public abstract class A&nbsp; <br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public A()&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine('A');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public virtual void Fun()&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine("A.Fun()");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>}</p>
<p>public class B: A&nbsp; <br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public B() <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine('B');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public new void Fun()&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine("B.Fun()");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void Main()&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A a = new B();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a.Fun();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>}</p>
<p><br>8.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 写出程序的输出结果：<br>public class A&nbsp; <br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public virtual void Fun1(int i) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine(i);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void Fun2(A a)&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a.Fun1(1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Fun1(5);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>}</p>
<p><br>public class B : A&nbsp; <br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public override void Fun1(int i)&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; base.Fun1 (i + 1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void Main()&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B b = new B();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A a = new A();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a.Fun2(b);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b.Fun2(a);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>}</p>
<p>&nbsp;</p>
<p>9. 一列数的规则如下: 1、1、2、3、5、8、13、21、34...... </p>
<p>&nbsp;&nbsp; 求第30位数是多少， 用递归算法实现。(C#语言)</p>
<p><br>10.&nbsp; 程序设计: 猫大叫一声，所有的老鼠都开始逃跑，主人被惊醒。(C#语言)</p>
<p>要求：&nbsp; 1.要有联动性，老鼠和主人的行为是被动的。</p>
<p>2.考虑可扩展性，猫的叫声可能引起其他联动效应。</p>
<p><br>参考答案:<br>1. (1)&nbsp; 继承性、封装性、多态性。（考基本概念）<br>&nbsp;&nbsp; (2)&nbsp; IEnumerable 、 GetEnumerator (对foreach机制的理解，本来不想出这题的，凑分)<br>&nbsp;&nbsp; (3)&nbsp; ... (送分题, 对ADO.net的了解)<br>评分标准：一空1分，满分10分。</p>
<p>&nbsp;</p>
<p>2. (1) B、C (考对接口的理解)&nbsp; (2)&nbsp; B、C、D (考查对ADO.net的熟练程度)<br>&nbsp; 评分标准: 一题5分，不选或者错选均不得分。漏选得2分。满分10分。</p>
<p>&nbsp;</p>
<p>3. . private :&nbsp;&nbsp; 私有成员, 在类的内部才可以访问。<br>&nbsp;&nbsp;&nbsp;&nbsp; protected : 保护成员，该类内部和继承类中可以访问。<br>&nbsp;&nbsp;&nbsp;&nbsp; public :&nbsp;&nbsp;&nbsp; 公共成员，完全公开，没有访问限制。<br>&nbsp;&nbsp;&nbsp;&nbsp; internal:&nbsp;&nbsp; 在同一命名空间内可以访问。<br>评分标准：答对1题2分，2题5分，3题7分。全对10分。 (送分题)</p>
<p>&nbsp;</p>
<p>4.&nbsp; 解1:&nbsp; select top 10 * from A where id not in (select top 30 id from A)<br>&nbsp;&nbsp;&nbsp; 解2:&nbsp; select top 10 * from A where id &gt; (select max(id) from (select top 30 id from A )as A)<br>&nbsp;&nbsp;&nbsp; 评分标准： 写对即10分。(答案不唯一，datagrid 分页可能需要用到)<br>&nbsp;<br>5.&nbsp; 1.使用QueryString,&nbsp; 如....?id=1; response. Redirect()....<br>&nbsp;&nbsp;&nbsp; 2.使用Session变量<br>&nbsp;&nbsp;&nbsp; 3.使用Server.Transfer<br>&nbsp;&nbsp;&nbsp; ....等等<br>&nbsp;&nbsp; 评分标准： 答对1点得3分， 两点7分， 3点10分。</p>
<p><br>6.&nbsp; (考查值引用和对象引用)<br>10<br>21<br>0<br>str<br>string being converted.<br>评分标准：答对一点得2分，满分10分。</p>
<p><br>7.&nbsp; A<br>&nbsp;&nbsp;&nbsp; B<br>A.Fun()<br>评分标准： 写出A.B 得5分，写出A.Fun()得5分，满分10分。<br>(考查在继承类中构造函数, 以及new 方法, )</p>
<p>&nbsp;</p>
<p><br>8.&nbsp; 2<br>&nbsp;&nbsp;&nbsp; 5<br>&nbsp;&nbsp;&nbsp; 1<br>&nbsp;&nbsp;&nbsp; 6</p>
<p>&nbsp;</p>
<p>(一些人做这题，头都晕了.... ^_^ )</p>
<p>&nbsp;</p>
<p>9.&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; public class MainClass<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void Main()&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine(Foo(30));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static int Foo(int i)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&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; return 0;<br>&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; return 1;<br>&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; }<br>&nbsp;&nbsp;&nbsp; }<br>评分标准： 写出return Foo(i -1) + Foo(i - 2); 得5分。</p>
<p>&nbsp;写出if(i &gt; 0 &amp;&amp; i &lt;= 2) return 1; 得5分。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 方法参数过多需要扣分（扣除分数 = 参数个数 － 1）</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 不用递归算法扣5分</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (递归算法在树结构建立等方面比较常用)</p>
<p>&nbsp;</p>
<p>10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;要点：1. 联动效果，运行代码只要执行Cat.Cryed()方法。2. 对老鼠和主人进行抽象<br>评分标准: &lt;1&gt;.构造出Cat、Mouse、Master三个类，并能使程序运行(2分)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;2&gt;从Mouse和Master中提取抽象（5分）<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;3&gt;联动效应，只要执行Cat.Cryed()就可以使老鼠逃跑，主人惊醒。(3分)</p>
<p><br>&nbsp;&nbsp;&nbsp; public interface Observer<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void Response();&nbsp;&nbsp;&nbsp; //观察者的响应，如是老鼠见到猫的反映<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; public interface Subject<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; void AimAt(Observer obs);&nbsp; //针对哪些观察者，这里指猫的要扑捉的对象---老鼠<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; public class Mouse : Observer<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private string name;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Mouse(string name, Subject subj)<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; this.name = name;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; subj.AimAt(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; public void Response()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine(name + " attempt to escape!");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; public class Master : Observer<br>&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Master(Subject subj)<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; subj.AimAt(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; public void Response()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine("Host waken!");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp; <br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;<br>&nbsp;&nbsp;&nbsp; public class Cat : Subject<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private ArrayList observers;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Cat()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.observers = new ArrayList();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void AimAt(Observer obs)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.observers.Add(obs);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void Cry()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine("Cat cryed!");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (Observer obs in this.observers)<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; obs.Response();<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; {&nbsp;&nbsp;&nbsp;&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; Cat cat = new Cat();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Mouse mouse1 = new Mouse("mouse1", cat);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Mouse mouse2 = new Mouse("mouse2", cat);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Master master = new Master(cat);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cat.Cry();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }</p>
<p><br>//---------------------------------------------------------------------------------------------</p>
<p>设计方法二: 使用event -- delegate设计..<br>&nbsp;&nbsp;&nbsp; public delegate void SubEventHandler();<br>&nbsp;&nbsp;&nbsp; public abstract class Subject<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public event SubEventHandler SubEvent;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; protected void FireAway()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (this.SubEvent != null)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.SubEvent();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; public class Cat : Subject<br>&nbsp;&nbsp;&nbsp; {&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public void Cry()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine("cat cryed.");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.FireAway();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; public abstract class Observer<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Observer(Subject sub)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sub.SubEvent += new SubEventHandler(Response);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public abstract void Response();&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; public class Mouse : Observer<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private string name;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Mouse(string name, Subject sub) : base(sub)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.name = name;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public override void Response()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine(name + " attempt to escape!");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; public class Master : Observer<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Master(Subject sub) : base(sub){}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public override void Response()<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine("host waken");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; class Class1<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; Cat cat = new Cat();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Mouse mouse1 = new Mouse("mouse1", cat);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Mouse mouse2 = new Mouse("mouse2", cat);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Master master = new Master(cat);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cat.Cry();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p><br>1. C#中 property 与 attribute的区别，他们各有什么用处，这种机制的好处在哪里？ </p>
<p>2. 讲一讲你理解的web service,在dot net framework中，怎么很好的结合xml?（讲概念就行了）</p>
<p>3. C#, Java 和 c++的特点，有什么相同的地方，不同的地方，C#分别从c++和java中吸取了他们那些优点？</p>
<p>4. C#可否对内存进行直接的操作？(这可是个难点哦？要注意！）</p>
<p>5. 用Visual C++ 6.0编写的代码(unmanaged code)，如何在CLR下和其他dot net component结合？</p>
<p>6. 以前作过的一些项目？介绍一下自己的编程经验。(这是蒙混不过去的，基本一问就知道是真是假)</p>
<p>7. 你对公司有什么期望？你的薪水期望值？为什么学计算机？以前的工作经验（这非常重要）？</p>
<p>&nbsp;</p>
<p>Q3： 维护数据库的完整性、一致性、你喜欢用触发器还是自写业务逻辑？为什么</p>
<p>Q4：ADO。NET相对于ADO等主要有什么改进？</p>
<p>Q5：ASP。NET与ASP相比，主要有哪些进步？</p>
<p>Q6：C#中的委托是什么？事件是不是一种委托？</p>
<p>Q7：描述一下C#中索引器的实现过程，是否只能根据数字进行索引？</p>
<p>Q8：C#中要使一个类支持FOREACH遍历，实现过程怎样？</p>
<p>Q10：写一个HTML页面，实现以下功能，左键点击页面时显示&#8220;您好&#8221;，右键点击时显示&#8220;禁止右键&#8221;。并在2分钟后自动关闭页面。</p>
<p>Q11：你对XMLHTTP、WEBSERVICE 了解吗？简单描述其特点、作用</p>
<p>Q12：接口和抽象类有什么区别？你选择使用接口和抽象类的依据是什么？</p>
<p>Q13：自定义控件和一般用户控件的异同？如果要用这两者之一，你会选择哪种？为什么</p>
<p>Q14：大概描述一下ASP。NET服务器控件的生命周期</p>
<p>Q15：UML</p>
<p>Q16：面向对象的概念，主要特点</p>
<p>Q17：类划分的依据。类粒度问题</p>
<p>Q18：事物管理问题</p>
<p>&nbsp;</p>
<p>第一，谈谈final, finally, finalize的区别。 </p>
<p>第二，Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类，是否可以implements(实现)interface(接口)?</p>
<p>第三，Static Nested Class 和 Inner Class的不同，说得越多越好(面试题有的很笼统)。</p>
<p>第四，&amp;和&amp;&amp;的区别。</p>
<p>第五，HashMap和Hashtable的区别。</p>
<p>第六，Collection 和 Collections的区别。</p>
<p>第七，什么时候用assert。</p>
<p>第八，GC是什么? 为什么要有GC? </p>
<p>第九，String s = new String("xyz");创建了几个String Object?</p>
<p>第十，Math.round(11.5)等於多少? Math.round(-11.5)等於多少?</p>
<p>第十一，short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?</p>
<p>第十二，sleep() 和 wait() 有什么区别?</p>
<p>第十三，Java有没有goto?</p>
<p>第十四，数组有没有length()这个方法? String有没有length()这个方法?</p>
<p>第十五，Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?</p>
<p>第十六，Set里的元素是不能重复的，那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?</p>
<p>第十七，给我一个你最常见到的runtime exception。</p>
<p>第十八，error和exception有什么区别?</p>
<p>第十九，List, Set, Map是否继承自Collection接口?</p>
<p>第二十，abstract class和interface有什么区别?</p>
<p>第二十一，abstract的method是否可同时是static,是否可同时是native，是否可同时是synchronized?</p>
<p>第二十二，接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?</p>
<p>第二十三，启动一个线程是用run()还是start()?</p>
<p>第二十四，构造器Constructor是否可被override?</p>
<p>第二十五，是否可以继承String类?</p>
<p>第二十六，当一个线程进入一个对象的一个synchronized方法后，其它线程是否可进入此对象的其它方法?</p>
<p>第二十七，try {}里有一个return语句，那么紧跟在这个try后的finally {}里的code会不会被执行，什么时候被执行，在return前还是后?</p>
<p>第二十八，编程题: 用最有效率的方法算出2乘以8等於几?</p>
<p>第二十九，两个对象值相同(x.equals(y) == true)，但却可有不同的hash code，这句话对不对?</p>
<p>第三十，当一个对象被当作参数传递到一个方法后，此方法可改变这个对象的属性，并可返回变化后的结果，那么这里到底是值传递还是引用传递?</p>
<p>第三十一，swtich是否能作用在byte上，是否能作用在long上，是否能作用在String上?</p>
<p>第三十二，编程题: 写一个Singleton出来。</p>
<p>&nbsp;</p>
<p>数据库方面：</p>
<p>&nbsp;</p>
<p>1.存储过程和函数的区别</p>
<p>2.事务是什么？</p>
<p>3.游标的作用？如何知道游标已经到了最后？</p>
<p>4.触发器分为事前触发和事后触发，这两种触发有和区别。语句级触发和行级触发有何区别。</p>
<p>&nbsp;</p>
<p>1。用C＃实现以下功能</p>
<p>&nbsp;&nbsp; a 产生一个int数组，长度为100，并向其中随机插入1-100，并且不能重复。</p>
<p>&nbsp;&nbsp; b 对上面生成的数组排序，需要支持升序、降序两种顺序</p>
<p>2。请说明在.net中常用的几种页面间传递参数的方法，并说出他们的优缺点。</p>
<p>3。请说明.net中的错误处理机制，并举例</p>
<p>4。请说出强名的含义</p>
<p>5。请列出c＃中几种循环的方法，并指出他们的不同</p>
<p>6。请指出.net中所有类型的基类</p>
<p>7。请指出GAC的含义</p>
<p>8。SQL SREVER中，向一个表中插入了新数据，如何快捷的得到自增量字段的当前值</p>
<p>&nbsp;</p>
<p>您在什么情况下会用到虚方法？它与接口有什么不同？</p>
<p>Q：Override与重载有什么区别？</p>
<p>Q：值类型与引用类型有什么区别？</p>
<p>Q：怎样理解静态变量？</p>
<p>Q：向服务器发送请求有几种方式？</p>
<p>Q：DataReader与Dataset有什么区别？</p>
<p>Q：如果在一个B/S结构的系统中需要传递变量值，但是又不能使用Session、Cookie、Application，您有几种方法进行处理？</p>
<p>Q：用.net做B/S结构的系统，您是用几层结构来开发，每一层之间的关系以及为什么要这样分层？</p>
<p>Q：软件开发过程一般有几个阶段？每个阶段的作用？</p>
<p>Q：微软推出了一系列的Application Block，请举出您所知道的Application Block并说明其作用？</p>
<p>Q：请列举一些您用到过的设计模式以及在什么情况下使用该模式？</p>
<p>Q：您对WebService的体会？</p>
<p>Q：您对编程的兴趣如何？工作中遇到不懂的问题是怎样去解决的？您一般怎样去提高自己的编程水平？</p>
<p>Q：您离职的原因是什么？</p>
<p>Q：通过超链接怎样传递中文参数？</p>
<p>Q：请编程遍历页面上所有TextBox控件并给它赋值为string.Empty？</p>
<p>Q：请编程实现一个冒泡排序算法？</p>
<p>&nbsp;</p>
<p>1、override与重载的区别</p>
<p>2、.net的错误处理机制是什么</p>
<p>3、C＃中接口和类的异同</p>
<p>4、DataReader和DataSet的异同</p>
<p>&nbsp;</p>
<p>1.有哪几种方法可以实现一个类存取另外一个类的成员函数及属性,并请举列来加以说明和分析.</p>
<p>2.如果需记录类的实例个数,该如何实现,请写一个简单的类于以证明.</p>
<p>3.A类是B类的基类,并且都有自己的构造,析构函数,请举例证明B类从实例化到消亡过程中构造,析构函数的执行过程.</p>
<p>4.需要实现对一个字符串的处理,首先将该字符串首尾的空格去掉,如果字符串中间还有连续空格的话,仅保留一个空格,即允许字符串中间有多个空格,但连续的空格数不可超过一个.</p>
<p>&nbsp;</p>
<p>一.填空题</p>
<p>1.c#中的三元运算符是__?:___?</p>
<p>2.当整数a赋值给一个object对象时，整数a将会被__装箱(封装)___?</p>
<p>3.类成员有_____种可访问形式？&nbsp; this.;new Class().Method;</p>
<p>4.public static const int A=1;这段代码有错误么？是什么？&nbsp; const不能用static修饰</p>
<p>5.float f=-123.567F;</p>
<p>&nbsp; int i=(int)f;</p>
<p>i的值现在是_____?&nbsp;&nbsp; 123&nbsp; </p>
<p>6.利用operator声明且仅声明了&#8220;==&#8221;，有什么错误么?&nbsp; </p>
<p>7.委托声明的关键字是______? delagete</p>
<p>8.用sealed修饰的类有什么特点？密封，不能继承</p>
<p>9.在Asp.net中所有的自定义用户控件都必须继承自________?Control</p>
<p>10.在.Net中所有可序列化的类都被标记为_____?&nbsp; </p>
<p>11.在.Net托管代码中我们不用担心内存漏洞，这是因为有了______?gc</p>
<p>12.下面的代码中有什么错误吗？_______</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; using System;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; class A</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public virtual void F(){</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine("A.F");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; abstract class B:A</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public abstract override void F(); // new public abstract void F();&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;</p>
<p>13.当类T只声明了私有实例构造函数时，则在T的程序文本外部，___可以___（可以 or 不可以）从T派生出新的类，不可以____（可以 or 不可以）直接创建T的任何实例。</p>
<p>14.下面这段代码有错误么？</p>
<p>&nbsp;&nbsp;&nbsp; switch (i){</p>
<p>&nbsp;&nbsp;&nbsp; case():</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CaseZero();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</p>
<p>&nbsp;&nbsp;&nbsp; case 1:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CaseOne();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</p>
<p>&nbsp;&nbsp;&nbsp; case 2:</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dufault;&nbsp; //wrong</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CaseTwo();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</p>
<p>&nbsp;&nbsp; }</p>
<p>15.在.Net中，类System.Web.UI.Page 可以被继承么？可以</p>
<p>&nbsp;</p>
<p>二.简答题</p>
<p>1.在c#中using和new这两个关键字有什么意义，请写出你所知道的意义？using 指令 和语句 new 创建实例 new 隐藏基类中方法</p>
<p>4.谈谈类和结构的区别？类是引用类型、结构是值类型</p>
<p>5.一个长度为10000的字符串，通过随机从a-z中抽取10000个字符组成。请用c＃语言编写主要程序来实现。</p>
<p>6.对于这样的一个枚举类型：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; enum Color:byte{</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Red,</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Green,</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Blue,</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Orange</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; string[] ss=Enum.GetNames(typeof(Color));</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; byte[]&nbsp;&nbsp; bb=Enum.GetValues(typeof(Color));</p>
<p>试写一段程序显示出枚举类型中定义的所有符号名称以及它们对应的数值。</p>
<p>7.您了解设计模式么？请列出您所知道的设计模式的名称。 //</p>
<p>8.请在SQL Server中设计表来保存一个树状结构的组织结构图（假设结构图中只有名称这一项内容需要保存），如果我想查询某一职位下的所有职位，用一个存储过程来实现，你有什么思路？</p>
<p>9.什么叫做SQL注入，如何防止？请举例说明。</p>
<p>10.下面这段代码输出什么？为什么？</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; int i=5;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; int j=5;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; if (Object.ReferenceEquals(i,j))</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine("Equal");</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; else</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine("Not Equal");</p>
<p>//不相等，因为比较的是对象</p>
<p>&nbsp;</p>
<p>1.写一个实现对一段字符串翻转的方法，附加一些条件，如其中包括&#8220;，&#8221;、&#8220;.&#8221;，对其设计测试用 例 。</p>
<p>2.对一支纸杯设计测试用例（可以是广义的杯，不一定是某一支特定功能的杯） </p>
<p>开发语言概念题 </p>
<p>3.什么是反射？ </p>
<p>4.用Singleton如何写设计模式 </p>
<p>5.C#中的垃圾回收机制是怎样的？ </p>
<p>6.什么是Application Pool？ </p>
<p>7.链表和数组的区别，各有什么优缺点.</p>
<p>8.Remoting在客户端服务器怎么实现 ?</p>
<p>9.什么是友元函数？ </p>
<p>10.用标准C如何实现多态？ </p>
<p>11.什么是虚函数？ </p>
<p>12.什么是抽象函数？ </p>
<p>13.什么是内存泄漏，怎样最简单的方法判断被存泄漏 ?</p>
<p>14.用英文介绍一下使用C#/C++做的项目，主要功能 </p>
<p>15.如果要与美国开电话会议，会如何与美国的工程师沟通 </p>
<p>16.如果老板认为你的技术落后，你会怎么回答&nbsp; </p>
<p>数据库知识题 </p>
<p>17.使用什么工具来调用存储过程 </p>
<p>18.SQL Server的两种索引是何形式？索引的作用？索引的优缺点？ </p>
<p>19.触发器的作用&nbsp; </p>
<p>其它知识题及问题 </p>
<p>20.什么是Web Service？ </p>
<p>21.什么是XML？ </p>
<p>22.Socket怎么实现</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div class=postText>
<p>Q：您在什么情况下会用到虚方法？它与接口有什么不同？</p>
<p>Q：Override与重载有什么区别？</p>
<p>Q：值类型与引用类型有什么区别？</p>
<p>Q：怎样理解静态变量？</p>
<p>Q：向服务器发送请求有几种方式？</p>
<p>Q：DataReader与Dataset有什么区别？</p>
<p>Q：如果在一个B/S结构的系统中需要传递变量值，但是又不能使用Session、Cookie、Application，您有几种方法进行处理？</p>
<p>Q：用.net做B/S结构的系统，您是用几层结构来开发，每一层之间的关系以及为什么要这样分层？</p>
<p>Q：软件开发过程一般有几个阶段？每个阶段的作用？</p>
<p>Q：微软推出了一系列的Application Block，请举出您所知道的Application Block并说明其作用？</p>
<p>Q：请列举一些您用到过的设计模式以及在什么情况下使用该模式？</p>
<p>Q：您对WebService的体会？</p>
<p>Q：您对编程的兴趣如何？工作中遇到不懂的问题是怎样去解决的？您一般怎样去提高自己的编程水平？</p>
<p>Q：您离职的原因是什么？</p>
<p>以下几道题目如果您不会，请较为详细的描述您的解决思路和方法</p>
<p>Q：通过超链接怎样传递中文参数？</p>
<p>Q：请编程遍历页面上所有TextBox控件并给它赋值为string.Empty？</p>
<p>Q：请编程实现一个冒泡排序算法？ </p>
<p>&nbsp;</p>
<p>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数据提供程序； <br>2.下列选项中，（c）是引用类型。 <br>a)enum类型 <br>b)struct类型 <br>c)string类型 <br>d)int类型 <br>3.关于ASP.NET中的代码隐藏文件的描述正确的是（a） <br>a)Web窗体页的程序的逻辑由代码组成，这些代码的创建用于与窗体交互。编程逻辑唯一与用户界面不同的文件中。该文件称作为&#8220;代码隐藏&#8221;文件，如果用C＃创建，该文件将具有&#8220;.ascx.cs&#8221;扩展名。 <br>b)项目中所有Web窗体页的代码隐藏文件都被编译成.EXE文件。 <br>c)项目中所有的Web窗体页的代码隐藏文件都被编译成项目动态链接库（.dll）文件。 <br>d)以上都不正确。 <br>4.以下描述错误的是（a） <br>a)在C++中支持抽象类而在C#中不支持抽象类。 <br>b)C++中可在头文件中声明类的成员而在CPP文件中定义类的成员，在C#中没有头文件并且在同一处声明和定义类的成员。 <br>c)在C#中可使用 new 修饰符显式隐藏从基类继承的成员。 <br>d)在C#中要在派生类中重新定义基类的虚函数必须在前面加Override。 <br>5.C#的数据类型有（b） <br>a)值类型和调用类型； <br>b)值类型和引用类型； <br>c)引用类型和关系类型； <br>d)关系类型和调用类型； <br>6.下列描述错误的是（d） <br>a)类不可以多重继承而接口可以； <br>b)抽象类自身可以定义成员而接口不可以； <br>c)抽象类和接口都不能被实例化； <br>d)一个类可以有多个基类和多个基接口； <br>7.在DOM中，装载一个XML文档的方法（b） <br>a)save方法 <br>b)load方法 <br>c)loadXML方法 <br>d)send方法 <br>8.下列关于构造函数的描述正确的是（c） <br>a)构造函数可以声明返回类型。 <br>b)构造函数不可以用private修饰 <br>c)构造函数必须与类名相同 <br>d)构造函数不能带参数 <br>9.以下是一些C#中的枚举型的定义，其中错误的用法有（a） <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 } <br>d)public enum var1{ Mike , Nike , Jike } <br>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 <br>b)2 <br>c)6 <br>d)越界 <br>11.接口是一种引用类型，在接口中可以声明（a），但不可以声明公有的域或私有的成员变量。 <br>a)方法、属性、索引器和事件； <br>b)方法、属性信息、属性； <br>c)索引器和字段； <br>d)事件和字段； <br>12.ASP.NET框架中，服务器控件是为配合Web表单工作而专门设计的。服务器控件有两种类型，它们是(a) <br>a)HTML控件和Web控件 <br>b)HTML控件和XML控件 <br>c)XML控件和Web控件 <br>d)HTML控件和IIS控件 <br>13.ASP.NET中，在Web窗体页上注册一个用户控件，指定该控件的名称为&#8221;Mike&#8221;，正确的注册指令为(b) <br>a)&lt;%@Register TagPrefix = &#8220;Mike&#8221; TagName = &#8220;Space2&#8221; Src = &#8220;myX.ascx&#8221;%&gt; <br>b)&lt;%@Register TagPrefix = &#8220;Space2&#8221; TagName = &#8220;Mike&#8221; Src = &#8220;myX.ascx&#8221;%&gt; <br>c)&lt;%@Register TagPrefix = &#8220;SpaceX&#8221; TagName = &#8220;Space2&#8221; Src = &#8220;Mike&#8221;%&gt; <br>d)以上皆非 <br>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对象； <br>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;); <br>16.Winform中，关于ToolBar控件的属性和事件的描述不正确的是(d)。 <br>a)Buttons属性表示ToolBar控件的所有工具栏按钮 <br>b)ButtonSize属性表示ToolBar控件上的工具栏按钮的大小，如高度和宽度 <br>c)DropDownArrows属性表明工具栏按钮（该按钮有一列值需要以下拉方式显示）旁边是否显示下箭头键 <br>d)ButtonClick事件在用户单击工具栏任何地方时都会触发 <br>17.在ADO.NET中执行一个存储过程时，如果要设置输出参数则必须同时设置参数的方向和（d ），必要时还要设置参数尺寸。 <br>a)大小； <br>b)上限； <br>c)初始值； <br>d)类型； <br></p>
<div class=post>
<div class=postText>18.如果将窗体的FormBoderStyle设置为None，则(B)。 <br>a)窗体没有边框并不能调整大小； <br>b)窗体没有边框但能调整大小； <br>c)窗体有边框但不能调整大小； <br>d)窗体是透明的； <br>19.如果要将窗体设置为透明的，则( b) <br>a)要将FormBoderStyle属性设置为None； <br>b)要将Opacity属性设置为小于100%得值； <br>c)要将locked 属性设置为True； <br>d)要将 Enabled属性设置为True； <br>20.下列关于C#中索引器理解正确的是(c ) <br>a)索引器的参数必须是两个或两个以上 <br>b)索引器的参数类型必须是整数型 <br>c)索引器没有名字 <br>d)以上皆非 <br>21.下面描述错误的是(D )。 <br>a)窗体也是控件； <br>b)窗体也是类； <br>c)控件是从窗体继承来的； <br>d)窗体的父类是控件类； <br>22.要对注册表进行操作则必须包含(D )。 <br>a)System.ComponentModel命名空间； <br>b)System.Collections命名空间； <br>c)System.Threading命名空间； <br>d)Microsoft.Win32命名空间； <br>23.要创建多文档应用程序，需要将窗体的(d )属性设为true。 <br>a)DrawGrid； <br>b)ShowInTaskbar； <br>c)Enabled； <br>d)IsMdiContainer； <br>24.如果设treeView1=new TreeView()，则treeView1.Nodes.Add("根节点")返回的是一个 (a)类型的值。 <br>a)TreeNode； <br>b)int； <br>c)string； <br>d)TreeView；&nbsp;</div>
<div class=postText><br>&nbsp;25.下面关于XML的描述错误的是（ d）。 <br>a)XML提供一种描述结构化数据的方法； <br>b)XML 是一种简单、与平台无关并被广泛采用的标准； <br>c)XML文档可承载各种信息； <br>d)XML只是为了生成结构化文档； <br>26. 以下的C#代码，试图用来定义一个接口： <br>public interface IFile <br>{ <br>int A; <br>int delFile() <br>{ <br>A = 3; <br>} <br>void disFile(); <br>} <br>关于以上的代码，以下描述错误的是(A,B )。 <br>a)以上的代码中存在的错误包括：不能在接口中定义变量，所以int A代码行将出现错误； <br>b)以上的代码中存在的错误包括：接口方法delFile是不允许实现的，所以不能编写具体的实现函数； <br>c)代码void disFile();声明无错误，接口可以没有返回值； <br>d)代码void disFile();应该编写为void disFile(){}；<br>29.在C#中利用Socket进行网络通信编程的一般步骤是：建立Socket侦听、（ a）30.声明一个委托public delegate int myCallBack(int x); 则用该委托产生的回调方法的原型应该是（b ）。 <br>a)void myCallBack(int x) ； <br>b)int receive(int num) ； <br>c)string receive(int x) ； <br>d)不确定的； <br>二、判断题，对的打&#8730;错的打&#215;（每小题2分，共20分） <br>1.( T)在C#中，装箱操作是将值类型转化成引用类型。 <br>2.( F)接口中的成员不可以有访问域修饰符，但可以有其它修饰符。 <br>3.( F)在C#中，索引器是专门用来访问对象中的数组信息的。 <br>4.( T)在C#中，接口可以被多重继承而类不能。 <br>5.( F)在C#中，int[][]是定义一个int型的二维数组。 <br>6.( T)异常类对象均为System．Exception类的对象。 <br>7.(T ) 当窗体最小化后，再次还原成为活动窗体时将自动触发Paint事件。 <br>8.( T) ASP.NET中，使用验证控件来验证用户输入，要求用户不可跳过该项输入，并且用户输入值在0和1000之间，则适用RequiredFieldValidator和RangeValidator控件。 <br>9.( F) 声明委托实际上是声明了一个方法。 <br>10.(T ) 任何事物都是对象。&nbsp;<br>1.请简述一下用Socket进行同步通讯编程的详细步骤 <br>1、在应用程序和远程设备中使用协议和网络地址初始化套接字 <br>2、在应用程序中通过指定端口和地址建立监听 <br>3、远程设备发出连接请求 <br>4、应用程序接受连接产生通信scoket <br>5、应用程序和远程设备开始通讯（在通讯中应用程序将挂起直到通讯结束） <br>6、通讯结束，关闭应用程序和远程设备的Socket回收资源 <br>2.比较ADO 与ADO.NET 的不同。</div>
</div>
</div><img src ="http://www.blogjava.net/yeiwei/aggbug/107439.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yeiwei/" target="_blank">圣域飞侠</a> 2007-03-30 11:35 <a href="http://www.blogjava.net/yeiwei/archive/2007/03/30/107439.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Asp.net 2.0 GridView数据导出Excel文件</title><link>http://www.blogjava.net/yeiwei/archive/2007/03/23/105751.html</link><dc:creator>圣域飞侠</dc:creator><author>圣域飞侠</author><pubDate>Fri, 23 Mar 2007 02:36:00 GMT</pubDate><guid>http://www.blogjava.net/yeiwei/archive/2007/03/23/105751.html</guid><wfw:comment>http://www.blogjava.net/yeiwei/comments/105751.html</wfw:comment><comments>http://www.blogjava.net/yeiwei/archive/2007/03/23/105751.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/yeiwei/comments/commentRss/105751.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yeiwei/services/trackbacks/105751.html</trackback:ping><description><![CDATA[<p>(一) . 运行示例图</p>
		<p> 1. 待导出数据的GridView图:</p>
		<p align="left">
				<img alt="" src="http://www.webasp.net/article/uploadfile/200701/20071812216877.jpg" />
		</p>
		<p>2. 生成的Excel文件</p>
		<p>
				<img alt="" src="http://www.webasp.net/article/uploadfile/200701/20071812216688.jpg" />
		</p>
		<p>(二). 代码</p>
		<p> 1. 前台页面 GridViewToExcelFile.aspx 代码:</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> 1<img alt="" src="http://www.webasp.net/article/uploadfile/200701/20071812217337.gif" align="top" src_cetemp="/Images/OutliningIndicators/None.gif" />&lt;%@ Page Language="C#" AutoEventWireup="true" <span style="COLOR: #ff0000">EnableEventValidation="false"</span> CodeFile="GridViewToExcelFile.aspx.cs" Inherits="_Default" %&gt;<br /> 2<img alt="" src="http://www.webasp.net/article/uploadfile/200701/20071812217337.gif" align="top" src_cetemp="/Images/OutliningIndicators/None.gif" /><br /> 3<img alt="" src="http://www.webasp.net/article/uploadfile/200701/20071812217337.gif" align="top" src_cetemp="/Images/OutliningIndicators/None.gif" />&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;<br /> 4<img alt="" src="http://www.webasp.net/article/uploadfile/200701/20071812217337.gif" align="top" src_cetemp="/Images/OutliningIndicators/None.gif" /><br /> 5<img alt="" src="http://www.webasp.net/article/uploadfile/200701/20071812217337.gif" align="top" src_cetemp="/Images/OutliningIndicators/None.gif" />&lt;html xmlns="http://www.w3.org/1999/xhtml" &gt;<br /> 6<img alt="" src="http://www.webasp.net/article/uploadfile/200701/20071812217337.gif" align="top" src_cetemp="/Images/OutliningIndicators/None.gif" />&lt;head runat="server"&gt;<br /> 7<img alt="" src="http://www.webasp.net/article/uploadfile/200701/20071812217337.gif" align="top" src_cetemp="/Images/OutliningIndicators/None.gif" />    &lt;title&gt;Untitled Page&lt;/title&gt;<br /> 8<img alt="" src="http://www.webasp.net/article/uploadfile/200701/20071812217337.gif" align="top" src_cetemp="/Images/OutliningIndicators/None.gif" />&lt;/head&gt;<br /> 9<img alt="" src="http://www.webasp.net/article/uploadfile/200701/20071812217337.gif" align="top" src_cetemp="/Images/OutliningIndicators/None.gif" />&lt;body&gt;<br />10<img alt="" src="http://www.webasp.net/article/uploadfile/200701/20071812217337.gif" align="top" src_cetemp="/Images/OutliningIndicators/None.gif" />    &lt;form id="form1" runat="server"&gt;<br />11<img alt="" src="http://www.webasp.net/article/uploadfile/200701/20071812217337.gif" align="top" src_cetemp="/Images/OutliningIndicators/None.gif" />    &lt;div&gt;<br />12<img alt="" src="http://www.webasp.net/article/uploadfile/200701/20071812217337.gif" align="top" src_cetemp="/Images/OutliningIndicators/None.gif" />        &lt;asp:GridView ID="gvFoods" runat="server" BackColor="LightGoldenrodYellow" BorderColor="Tan" BorderWidth="1px" CellPadding="2" ForeColor="Black" GridLines="None" EnableViewState="true"&gt;<br />13<img alt="" src="http://www.webasp.net/article/uploadfile/200701/20071812217337.gif" align="top" src_cetemp="/Images/OutliningIndicators/None.gif" />            &lt;FooterStyle BackColor="Tan" /&gt;<br />14<img alt="" src="http://www.webasp.net/article/uploadfile/200701/20071812217337.gif" align="top" src_cetemp="/Images/OutliningIndicators/None.gif" />            &lt;SelectedRowStyle BackColor="DarkSlateBlue" ForeColor="GhostWhite" /&gt;<br />15<img alt="" src="http://www.webasp.net/article/uploadfile/200701/20071812217337.gif" align="top" src_cetemp="/Images/OutliningIndicators/None.gif" />            &lt;PagerStyle BackColor="PaleGoldenrod" ForeColor="DarkSlateBlue" HorizontalAlign="Center" /&gt;<br />16<img alt="" src="http://www.webasp.net/article/uploadfile/200701/20071812217337.gif" align="top" src_cetemp="/Images/OutliningIndicators/None.gif" />            &lt;HeaderStyle BackColor="Tan" Font-Bold="True" /&gt;<br />17<img alt="" src="http://www.webasp.net/article/uploadfile/200701/20071812217337.gif" align="top" src_cetemp="/Images/OutliningIndicators/None.gif" />            &lt;AlternatingRowStyle BackColor="PaleGoldenrod" /&gt;<br />18<img alt="" src="http://www.webasp.net/article/uploadfile/200701/20071812217337.gif" align="top" src_cetemp="/Images/OutliningIndicators/None.gif" />        &lt;/asp:GridView&gt;<br />19<img alt="" src="http://www.webasp.net/article/uploadfile/200701/20071812217337.gif" align="top" src_cetemp="/Images/OutliningIndicators/None.gif" />        &lt;br /&gt;<br />20<img alt="" src="http://www.webasp.net/article/uploadfile/200701/20071812217337.gif" align="top" src_cetemp="/Images/OutliningIndicators/None.gif" />        &lt;asp:Button ID="Button1" runat="server" BackColor="#C0C0FF" OnClick="Button1_Click"<br />21<img alt="" src="http://www.webasp.net/article/uploadfile/200701/20071812217337.gif" align="top" src_cetemp="/Images/OutliningIndicators/None.gif" />            Text="Create Excel" Width="137px" /&gt;<br />22<img alt="" src="http://www.webasp.net/article/uploadfile/200701/20071812217337.gif" align="top" src_cetemp="/Images/OutliningIndicators/None.gif" />    &lt;/div&gt;<br />23<img alt="" src="http://www.webasp.net/article/uploadfile/200701/20071812217337.gif" align="top" src_cetemp="/Images/OutliningIndicators/None.gif" />    &lt;/form&gt;<br />24<img alt="" src="http://www.webasp.net/article/uploadfile/200701/20071812217337.gif" align="top" src_cetemp="/Images/OutliningIndicators/None.gif" />&lt;/body&gt;<br />25<img alt="" src="http://www.webasp.net/article/uploadfile/200701/20071812217337.gif" align="top" src_cetemp="/Images/OutliningIndicators/None.gif" />&lt;/html&gt;</div>
		<p> 2. 页面后台文件 GridViewToExcelFile.aspx.cs 代码:</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">  1 using System;<br />  2 using System.Data;<br />  3 using System.Configuration;<br />  4 using System.Web;<br />  5 using System.Web.Security;<br />  6 using System.Web.UI;<br />  7 using System.Web.UI.WebControls;<br />  8 using System.Web.UI.WebControls.WebParts;<br />  9 using System.Web.UI.HtmlControls;<br /> 10 using System.IO;<br /> 11 using System.Text;<br /> 12 using System.Collections;<br /> 13 <br /> 14 public partial class _Default : System.Web.UI.Page <br /> 15 {<br /> 16     protected void Page_Load(object sender, EventArgs e)<br /> 17     {<br /> 18        if(!Page.IsPostBack)<br /> 19        {<br /> 20           CreateStructure();<br /> 21           this.gvFoods.DataSource = this.CreateData();<br /> 22           this.gvFoods.DataBind();<br /> 23        }<br /> 24     }<br /> 25    private DataTable CreateStructure()<br /> 26    {<br /> 27       DataTable dt = new DataTable();<br /> 28       dt.Columns.Add(new DataColumn("CategoryID", typeof(int)));<br /> 29       dt.Columns.Add(new DataColumn("CategoryName", typeof(string)));<br /> 30       dt.Columns.Add(new DataColumn("Price", typeof(int)));      <br /> 31       return dt;<br /> 32    }<br /> 33    public DataSet CreateData()<br /> 34    {<br /> 35       DataSet ds = new DataSet();<br /> 36       DataTable dt = this.CreateStructure();<br /> 37 <br /> 38       DataRow drNew = dt.NewRow();      <br /> 39       drNew = dt.NewRow();<br /> 40       drNew["CategoryID"] = 1;<br /> 41       drNew["CategoryName"] = "Apple";<br /> 42       drNew["Price"] = 2;<br /> 43       dt.Rows.Add(drNew);<br /> 44 <br /> 45       drNew = dt.NewRow();<br /> 46       drNew["CategoryID"] = 2;<br /> 47       drNew["CategoryName"] = "Banana";<br /> 48       drNew["Price"] = 3;<br /> 49       dt.Rows.Add(drNew);<br /> 50 <br /> 51       drNew = dt.NewRow();<br /> 52       drNew["CategoryID"] = 3;<br /> 53       drNew["CategoryName"] = "Orange";<br /> 54       drNew["Price"] = 1;<br /> 55       dt.Rows.Add(drNew);<br /> 56 <br /> 57       drNew = dt.NewRow();<br /> 58       drNew["CategoryID"] = 4;<br /> 59       drNew["CategoryName"] = "Radish";<br /> 60       drNew["Price"] = 2;<br /> 61       dt.Rows.Add(drNew);<br /> 62 <br /> 63       drNew = dt.NewRow();<br /> 64       drNew["CategoryID"] = 5;<br /> 65       drNew["CategoryName"] = "Pen";<br /> 66       drNew["Price"] = 3;<br /> 67       dt.Rows.Add(drNew);<br /> 68 <br /> 69       drNew = dt.NewRow();<br /> 70       drNew["CategoryID"] = 6;<br /> 71       drNew["CategoryName"] = "Pencil";<br /> 72       drNew["Price"] = 7;<br /> 73       dt.Rows.Add(drNew);<br /> 74 <br /> 75       drNew = dt.NewRow();<br /> 76       drNew["CategoryID"] = 7;<br /> 77       drNew["CategoryName"] = "Ruler";<br /> 78       drNew["Price"] = 3;<br /> 79       dt.Rows.Add(drNew);<br /> 80 <br /> 81       drNew = dt.NewRow();<br /> 82       drNew["CategoryID"] = 8;<br /> 83       drNew["CategoryName"] = "Eraser";<br /> 84       drNew["Price"] = 5;<br /> 85       dt.Rows.Add(drNew);<br /> 86 <br /> 87       ds.Tables.Add( dt );<br /> 88       return ds;<br /> 89    }<br /> 90    protected void Button1_Click(object sender, EventArgs e)<br /> 91    {     <br /> 92       StringWriter sw = new StringWriter();<br /> 93       HtmlTextWriter htw = new HtmlTextWriter(sw);<br /> 94       this.gvFoods.RenderControl(htw);<br /> 95       string strHtml = sw.ToString().Trim();<br /> 96 <br /> 97       string ExcelFileName = "FoodList.xls";<br /> 98       string FilePhysicialPathName = Request.PhysicalApplicationPath;      <br /> 99       <br />100       //生成的Excel文件名<br />101       string objectExcelFileName = Path.Combine(FilePhysicialPathName, ExcelFileName);<br />102 <br />103       if( File.Exists( objectExcelFileName ))<br />104       {<br />105          File.Delete(objectExcelFileName);<br />106       }<br />107       FileStream fs = new FileStream(objectExcelFileName, FileMode.Create);<br />108       BinaryWriter bw = new BinaryWriter(fs, Encoding.GetEncoding("GB18030"));<br />109       bw.Write(strHtml);<br />110       bw.Close();<br />111       fs.Close();<br />112 <br />113    }<br />114    <span style="COLOR: #ff0000">public override void VerifyRenderingInServerForm(Control control)<br />115    {<br />116       //base.VerifyRenderingInServerForm(control);<br />117    }  <br /></span>118 }<br />119 </div><img src ="http://www.blogjava.net/yeiwei/aggbug/105751.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yeiwei/" target="_blank">圣域飞侠</a> 2007-03-23 10:36 <a href="http://www.blogjava.net/yeiwei/archive/2007/03/23/105751.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>.netWeb用户控件使用技巧</title><link>http://www.blogjava.net/yeiwei/archive/2007/03/23/105750.html</link><dc:creator>圣域飞侠</dc:creator><author>圣域飞侠</author><pubDate>Fri, 23 Mar 2007 02:35:00 GMT</pubDate><guid>http://www.blogjava.net/yeiwei/archive/2007/03/23/105750.html</guid><wfw:comment>http://www.blogjava.net/yeiwei/comments/105750.html</wfw:comment><comments>http://www.blogjava.net/yeiwei/archive/2007/03/23/105750.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yeiwei/comments/commentRss/105750.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yeiwei/services/trackbacks/105750.html</trackback:ping><description><![CDATA[<div class="con_sample">
				<p>本人学习.net用户控件的过程：如何读取子控件的值，自定义事件，动态控制子控件的状态，附带例子。</p>
		</div>
		<div class="con_all">
				<p>
				</p>
				<p>关于Web用户控件如何读取子控件的值，自定义事件，动态控制子控件状态的应用。</p>
				<p>效果图：</p>
				<p>
						<img alt="" src="http://www.webasp.net/article/uploadfile/200701/2007115105123105.jpg" />
				</p>
				<p> </p>
				<p>/*用户控件界面开始*/</p>
				<p>&lt;%@ Control Language="C#" AutoEventWireup="true" CodeFile="SearchBar.ascx.cs" Inherits="Singcn.UC.SearchBar" %&gt;</p>
				<p>&lt;table width="100%" border="0" cellpadding="0" cellspacing="0" class="coolBar"&gt;<br />  &lt;tr&gt;<br />    &lt;td style="WIDTH: 3px; CURSOR: move; height: 26px;"&gt;&lt;DIV CLASS="TBHandle"&gt;&lt;/DIV&gt;&lt;/TD&gt;<br />    &lt;td style="height: 26px"&gt;<br />        &amp;nbsp;查询：&lt;asp:TextBox ID="search_txt" runat="server" CssClass="TextBox" Width="120px"&gt;&lt;/asp:TextBox&gt;<br />        &lt;asp:DropDownList ID="search_lx" runat="server"&gt;</p>
				<p>        &lt;/asp:DropDownList&gt;<br />        &lt;asp:Button ID="BOk" runat="server" CssClass="Button" Text="查询" OnClick="BOk_Click"/&gt;<br />        &lt;asp:Label ID="Label1" runat="server" Text="Label"&gt;&lt;/asp:Label&gt;&lt;/td&gt;<br />  &lt;/tr&gt;<br />&lt;/table&gt;</p>
				<p>/*用户控件界面结束*/</p>
				<p> </p>
				<p> </p>
				<p>/*用户控件代码开始*/</p>
				<p>namespace MY.UC<br />{<br />    using System;<br />    using System.Data;<br />    using System.Configuration;<br />    using System.Collections;<br />    using System.Web;<br />    using System.Web.Security;<br />    using System.Web.UI;<br />    using System.Web.UI.WebControls;<br />    using System.Web.UI.WebControls.WebParts;<br />    using System.Web.UI.HtmlControls;</p>
				<p>    public delegate void BOkClickHandler(object sender, System.EventArgs e); //定义查询按钮委托</p>
				<p>    //自定义枚举,用户控制查询条显示模式<br />    public enum EBarType { mintype = 1, usertype, xwxxtype };<br />    //1=缺省模式,2=操作员模式,3=新闻管理模式</p>
				<p>
						<br />    public partial class SearchBar : System.Web.UI.UserControl<br />    {<br />        public event BOkClickHandler BOkClick;//定义事件<br />        <br />        public string SearchTxt//设置文本框内容<br />        {<br />            get { return this.search_txt.Text; }//this.search_txt.Text<br />            set { this.search_txt.Text = value; }<br />        }</p>
				<p>
						<br />        private EBarType _BarType;<br />        public EBarType BarType//设置显示模式<br />        {<br />            get { return _BarType; }<br />            set <br />            {<br />                _BarType = value;<br />                switch (value)<br />                {<br />                    case EBarType.xwxxtype:<br />                        showxwxx();<br />                        break;</p>
				<p>                    case EBarType.usertype:<br />                        showuser();<br />                        break;</p>
				<p>                    default://EBarType.mintype;<br />                        showmin();<br />                        break;<br />                }</p>
				<p>            }<br />        }<br />    <br />    <br />        private bool _TxtVisible;<br />        public bool TxtVisible<br />        {<br />            get { return _TxtVisible; }<br />            set<br />            {<br />                _TxtVisible = value;<br />                this.search_txt.Visible = _TxtVisible;<br />            }<br />        }//控制文本框是否显示</p>
				<p>        private bool _LXVisible;<br />        public bool LXVisible<br />        {<br />            get { return _LXVisible; }<br />            set<br />            {<br />                _LXVisible = value;<br />                this.search_lx.Visible = _LXVisible;<br />            }<br />        }//控制下拉列表是否显示</p>
				<p>        <br />        //private string _SearchLX;<br />        public string SearchLX<br />        {<br />            get { return this.search_lx.SelectedItem.Value; }//this.search_lx.SelectedItem.Value;_SearchLX<br />            set<br />            {<br />                for (int myi = 0; myi &lt; search_lx.Items.Count ; myi++)<br />                {<br />                    if (search_lx.Items[myi].Value == value)<br />                    {<br />                        search_lx.SelectedIndex = myi;<br />                        break;<br />                    }<br />                }<br />            }<br />        }//设置下拉列表的值</p>
				<p>        protected void Page_Load(object sender, EventArgs e)<br />        {</p>
				<p>        }</p>
				<p>        #region web 窗体设计器生成的代码<br />        override protected void OnInit(EventArgs e)<br />        {<br />            InitializeComponent();<br />            base.OnInit(e);</p>
				<p>        }</p>
				<p>        private void InitializeComponent()<br />        {<br />            this.BOk.Click += new System.EventHandler(this.BOk_Click);//这一行很重要<br />        }<br />        #endregion</p>
				<p>        protected void BOk_Click(object sender, EventArgs e)<br />        {<br />//            this._SearchTxt = this.search_txt.Text;<br />            //this._SearchLX = this.search_lx.SelectedItem.Value;<br />            if (BOkClick != null)<br />                BOkClick(this, e);<br />        }</p>
				<p>        private void showxwxx()//新闻管理模式的界面处理<br />        {<br />            Label1.Visible = false;<br />            search_txt.Visible = true;<br />            search_lx.Visible = true;<br />            search_lx.Items.Clear();<br />            ListItem myitem = new ListItem();<br />            myitem.Text = "标题";<br />            myitem.Value = "1";<br />            search_lx.Items.Add(myitem);<br />            myitem = new ListItem();<br />            myitem.Text = "作者";<br />            myitem.Value = "2";<br />            search_lx.Items.Add(myitem);<br />            search_lx.SelectedIndex = 0;<br />        <br />        }<br />        private void showuser()//操作员模式的界面处理<br />        {<br />            Label1.Visible = false;<br />            search_txt.Visible = true;<br />            search_lx.Visible = true;<br />            search_lx.Items.Clear();<br />            ListItem myitem = new ListItem();<br />            myitem.Text="用户ID";<br />            myitem.Value="1";<br />            search_lx.Items.Add(myitem);<br />            myitem = new ListItem();<br />            myitem.Text = "用户名称";<br />            myitem.Value = "2";<br />            search_lx.Items.Add(myitem);<br />            search_lx.SelectedIndex = 0;</p>
				<p>        }</p>
				<p>        private void showmin()//缺省模式的界面处理<br />        {<br />            Label1.Visible = true;<br />            search_txt.Visible = true;<br />            search_lx.Visible = false;<br />            search_lx.Items.Clear();</p>
				<p>
						<br />        }<br />    }<br />}<br />/*用户控件代码结束*/</p>
				<p>
				</p>
				<p>
				</p>
				<p>/*测试页界面开始*/</p>
				<p>&lt;%@ Page Language="C#" AutoEventWireup="true" CodeFile="SearchBarTest.aspx.cs" Inherits="Control_SearchBarTest" %&gt;</p>
				<p>&lt;%@ Register Src="SearchBar.ascx" TagName="SearchBar" TagPrefix="uc1" %&gt;</p>
				<p>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;</p>
				<p>&lt;html xmlns="http://www.w3.org/1999/xhtml" &gt;<br />&lt;head runat="server"&gt;<br />    &lt;title&gt;无标题页&lt;/title&gt;<br />    &lt;link href="../CSS/system.css" _fcksavedurl=""../CSS/system.css"" _fcksavedurl=""../CSS/system.css"" _fcksavedurl=""../CSS/system.css"" rel="stylesheet" type="text/css" /&gt;<br />    <br />    &lt;link href="../CSS/searchbar.css" rel="stylesheet" type="text/css" /&gt;    <br />&lt;/head&gt;<br />&lt;body&gt;<br />    &lt;form id="form1" runat="server"&gt;<br />    &lt;div&gt;<br />        &lt;uc1:SearchBar ID="SearchBar1" runat="server" BarType="usertype" /&gt;<br />        &lt;asp:Label ID="Label1" runat="server" Text="查询结果"&gt;&lt;/asp:Label&gt;&lt;br /&gt;<br />        &lt;asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="缺省" /&gt;<br />        &lt;asp:Button ID="Button2" runat="server" OnClick="Button2_Click" Text="操作员界面" /&gt;<br />        &lt;asp:Button ID="Button3" runat="server" OnClick="Button3_Click" Text="新闻管理界面" /&gt;<br />        &lt;asp:Button ID="Button4" runat="server" OnClick="Button4_Click" Text="隐藏下拉框" /&gt;&lt;/div&gt;<br />        &lt;br /&gt;<br />    &lt;/form&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br />/*测试页界面结束*/</p>
				<p>/*测试页代码开始*/</p>
				<p>using System;<br />using System.Data;<br />using System.Configuration;<br />using System.Collections;<br />using System.Web;<br />using System.Web.Security;<br />using System.Web.UI;<br />using System.Web.UI.WebControls;<br />using System.Web.UI.WebControls.WebParts;<br />using System.Web.UI.HtmlControls;<br />using MY.UC;</p>
				<p>public partial class Control_SearchBarTest : System.Web.UI.Page<br />{<br />    protected void Page_Load(object sender, EventArgs e)<br />    {</p>
				<p>    }</p>
				<p>    #region web 窗体设计器生成的代码<br />    override protected void OnInit(EventArgs e)<br />    {<br />        InitializeComponent();<br />        base.OnInit(e);<br />    }</p>
				<p>    private void InitializeComponent()<br />    {<br />        //注册查询条的按钮事件<br />        this.SearchBar1.BOkClick += new BOkClickHandler(this.SearchBar1_BOkClick);</p>
				<p>    }<br />    #endregion</p>
				<p>    protected void SearchBar1_BOkClick(object sender, EventArgs e)<br />    {<br />        //查询按钮事件<br />        Label1.Text = "查询内容："+this.SearchBar1.SearchTxt +"  选择列表:"+ this.SearchBar1.SearchLX;</p>
				<p>    }<br />    protected void Button1_Click(object sender, EventArgs e)<br />    {<br />        this.SearchBar1.BarType = EBarType.mintype;<br />    }</p>
				<p>    protected void Button2_Click(object sender, EventArgs e)<br />    {<br />        this.SearchBar1.BarType = EBarType.usertype;<br />    }</p>
				<p>    protected void Button3_Click(object sender, EventArgs e)<br />    {<br />        this.SearchBar1.BarType = EBarType.xwxxtype;<br />    }</p>
				<p>    protected void Button4_Click(object sender, EventArgs e)<br />    {<br />        this.SearchBar1.LXVisible = false;<br />    }<br />}</p>
				<p>
						<br />/*测试页代码结束*/</p>
		</div><img src ="http://www.blogjava.net/yeiwei/aggbug/105750.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yeiwei/" target="_blank">圣域飞侠</a> 2007-03-23 10:35 <a href="http://www.blogjava.net/yeiwei/archive/2007/03/23/105750.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在ASP.NET中插入flash</title><link>http://www.blogjava.net/yeiwei/archive/2007/03/23/105749.html</link><dc:creator>圣域飞侠</dc:creator><author>圣域飞侠</author><pubDate>Fri, 23 Mar 2007 02:34:00 GMT</pubDate><guid>http://www.blogjava.net/yeiwei/archive/2007/03/23/105749.html</guid><wfw:comment>http://www.blogjava.net/yeiwei/comments/105749.html</wfw:comment><comments>http://www.blogjava.net/yeiwei/archive/2007/03/23/105749.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yeiwei/comments/commentRss/105749.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yeiwei/services/trackbacks/105749.html</trackback:ping><description><![CDATA[<strong>
				<div class="con_all">
						<p>
						</p>
						<p>学asp。net的同学可能还在疑问是否能播放动画，其实在asp。net中的swf格式的播放和在html中是一样的</p>
						<p>你只需要在asp。net中的界面中的&lt;html&gt;和&lt;/html&gt;中插入下边的</p>
						<p>代码就行了 <br />  &lt;div   align="center"&gt;   <br />    <br />  &lt;!----------------------以下代码用来显示flash-------------------------&gt;   <br />    <br />    &lt;object   classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"   codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"   width="150"   height="280"&gt;   <br />    <br />    &lt;param   name="movie"       value="你的swf格式的地址"&gt;   <br />    <br />    &lt;!----   上value值填入flash的地址，你的flash在本机上就用相对地址!----&gt;   <br />                                                                                                          <br />    &lt;param   name="quality"   value="high"&gt;   <br />    <br />    &lt;param   name="SCALE"   value="exactfit"&gt;   <br />                                                                                <br />    &lt;!----   下src值填入和刚才一样的地址!----&gt;           <br />                      <br />    &lt;embed   src="你的swf格式的地址"   width="150"   height="280"   quality="high"   pluginspage="http://www.macromedia.com/go/getflashplayer"   type="application/x-shockwave-flash"   scale="exactfit"&gt;&lt;/embed&gt;   <br />                                                                                                        <br />  &lt;/object&gt;   <br />    <br />  &lt;!----------------------显示flash代码结束------------------------&gt;   <br />    <br />  &lt;/div&gt;   <br />就ok啦 <br /></p>
						<p>
						</p>
				</div>
		</strong><img src ="http://www.blogjava.net/yeiwei/aggbug/105749.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yeiwei/" target="_blank">圣域飞侠</a> 2007-03-23 10:34 <a href="http://www.blogjava.net/yeiwei/archive/2007/03/23/105749.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>