<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>sholfen-翻譯文章</title>
<link>http://blog.roodo.com/sholfen/archives/cat_304453.html</link>
<description></description>
<language>zh-tw</language>
<generator>Roodo Blog System</generator>
<copyright>All Rights Reserved</copyright>
<atom:link href="http://blog.roodo.com/sholfen/archives/cat_304453.xml" rel="self" type="application/rss+xml" />
<item>
	<title>逐漸凋零的T-SQL</title>
	<description><![CDATA[
	幾位工程師在開發專案超過一年後，給我一個結論：T-SQL該功成身退了。這個曾經加強SQL Server 資料庫功能的老舊語言該被取代了。為什麼他們會下這樣的結論呢？主要的原因是：CLR整合進SQL Server 2005 LINQ 缺乏創新的T-SQL CLR整合進SQL Server 2005從2000年到2005年，微軟花費相當多的資源將CLR以及.NET Framewrok整合至SQL Server 2005 裡。現在你可以使用VB.NET或C#去產生觸發程序，預存程序、自訂函數、custom data tpyes，以及custom aggregates。微軟花費相當多的心力確保在SQL Server裡CLR有很好的執行效能。LINQ微軟目前在研發LINQ(Language Integrated Query)，一種結合database-style 以及OOP 語言(物件導向語言，像是VB.NET和C#)的技術。你可以在VB.NET和C#語言上利用LINQ加入queries 去讀取資源來源像是資料庫、物件以及XML。最棒的是，它還有提供工具以及語法去處理multiple heterogeneous data source。有關更多LINQ的資訊，可以翻翻Mar/Apr 2006那期的CoDe magazine。但可惜的是，我認為LINQ並不會加在開發代號為&quot;Orcas&quot;的下一版Visual Studio。缺乏創新的T-SQL最後也是最重要的就是T-SQL這語言缺乏創新。這五年來，T-SQL的進步相當少。當T-SQL已經擁有使用者自訂函數、例外處理以及更多的SQL能力，但語言上的改變卻相當少。它仍然只是個程序性語言和笨重的傢伙。T-SQL需要提供OOP的架構像是classes、properies、methods等等。結論由以上三點可知，T-SQL需要結構上以及工具的更新。其中一個選擇是將T-SQL加進物件導向功能或是由LINQ和CLR結合，來取代現行SQL上的語言。原文網址：(需有EPS帳號才能閱讀完整版)http://www.code-magazine.com/Article.aspx?quickid=0607011
	]]>
	</description>
	<content:encoded><![CDATA[
	<p>幾位工程師在開發專案超過一年後，給我一個結論：T-SQL該功成身退了。這個曾經加強SQL Server 資料庫功能的老舊語言該被取代了。<br /><br />為什麼他們會下這樣的結論呢？主要的原因是：</p><ol><li>CLR整合進SQL Server 2005 </li><li>LINQ </li><li>缺乏創新的T-SQL </li></ol><p><strong><em>CLR整合進SQL Server 2005<br /></em></strong>從2000年到2005年，微軟花費相當多的資源將CLR以及.NET Framewrok整合至SQL Server 2005 裡。現在你可以使用VB.NET或C#去產生觸發程序，預存程序、自訂函數、custom data tpyes，以及custom aggregates。微軟花費相當多的心力確保在SQL Server裡CLR有很好的執行效能。<br /><br /><strong><em>LINQ<br /></em></strong>微軟目前在研發LINQ(Language Integrated Query)，一種結合database-style 以及OOP 語言(物件導向語言，像是VB.NET和C#)的技術。你可以在VB.NET和C#語言上利用LINQ加入queries 去讀取資源來源像是資料庫、物件以及XML。最棒的是，它還有提供工具以及語法去處理multiple heterogeneous data source。有關更多LINQ的資訊，可以翻翻Mar/Apr 2006那期的<em>CoDe magazine</em>。但可惜的是，我認為LINQ並不會加在開發代號為&quot;Orcas&quot;的下一版Visual Studio。<br /><br /><strong><em>缺乏創新的T-SQL<br /></em></strong>最後也是最重要的就是T-SQL這語言缺乏創新。這五年來，T-SQL的進步相當少。當T-SQL已經擁有使用者自訂函數、例外處理以及更多的SQL能力，但語言上的改變卻相當少。它仍然只是個程序性語言和笨重的傢伙。T-SQL需要提供OOP的架構像是classes、properies、methods等等。<br /><br /><strong><em>結論<br /></em></strong>由以上三點可知，T-SQL需要結構上以及工具的更新。其中一個選擇是將T-SQL加進物件導向功能或是由LINQ和CLR結合，來取代現行SQL上的語言。<br /><br />原文網址：(需有EPS帳號才能閱讀完整版)<br /><a href="http://www.code-magazine.com/Article.aspx?quickid=0607011">http://www.code-magazine.com/Article.aspx?quickid=0607011</a></p>		]]>
	</content:encoded>
	<link>http://blog.roodo.com/sholfen/archives/2578110.html</link>
	<guid>http://blog.roodo.com/sholfen/archives/2578110.html</guid>
	<category>翻譯文章</category>
	<pubDate>Fri, 18 Aug 2006 00:45:00 +0800</pubDate>
</item>
<item>
	<title>[C# 2.0]創造屬於自己的Generic Collection</title>
	<description><![CDATA[
	創造屬於自己的Generic Collection&nbsp;.Net 2.0提供一些generic collection類別給list、堆疊、佇列以及字典等等資料結構使用。事實上，這些這些類別所提供的遠大於您程式上的需求。但有時還是會另外自訂資料結構作為特殊的用途，而不用現成的()。這是目前程式語言以及Framework所要作到的目標。&nbsp;我該怎麼作？(待續)
	]]>
	</description>
	<content:encoded><![CDATA[
	<p style="margin: 0cm 28.2pt 0pt 0cm" class="MsoNormal"><strong><font size="2"><em><span style="font-family: 新細明體">創造屬於自己的</span><span><font face="Times New Roman">Generic Collection&nbsp;<br /></font></span></em></font></strong><font size="2"><span><font face="Times New Roman">.Net 2.0</font></span><span style="font-family: 新細明體">提供一些</span><span><font face="Times New Roman">generic collection</font></span><span style="font-family: 新細明體">類別給</span><span><font face="Times New Roman">list</font></span><span style="font-family: 新細明體">、堆疊、佇列以及字典等等資料結構使用。事實上，這些這些類別所提供的遠大於您程式上的需求。但有時還是會另外自訂資料結構作為特殊的用途，而不用現成的</span><span><font face="Times New Roman">()</font></span><span style="font-family: 新細明體">。這是目前程式語言以及</span><span><font face="Times New Roman">Framework</font></span><span style="font-family: 新細明體">所要作到的目標。</span></font><font size="2"><span>&nbsp;<br /><br /></span></font><strong><span style="font-family: 新細明體"><font size="2"><br />我該怎麼作？<br />(待續)</font></span></strong></p>		]]>
	</content:encoded>
	<link>http://blog.roodo.com/sholfen/archives/2577959.html</link>
	<guid>http://blog.roodo.com/sholfen/archives/2577959.html</guid>
	<category>翻譯文章</category>
	<pubDate>Mon, 26 Sep 2005 09:55:00 +0800</pubDate>
</item>
<item>
	<title>[C# 2.0]使用Generic Collection 宣告安全型別的清單</title>
	<description><![CDATA[
	宣告安全型別的清單(list)&nbsp;安全型別讓撰寫出來的程式碼更容易維護。安全型別的語言在編譯時期就找出bug，而不是在執行時期才被發現。在C# 1.X，宣告的general collection(stack, list)是可以接受任何型別的變數。在1.X版的Framework中，collection所存放的實體為System.Object，且任何變數都源自於System.Object，所以collection可以取得任何型别的變數，換句話說，它並不安全。假如想宣告一個存放Employee物件的list，在C# 1.X中，會使用到存放System.Object物件的ArrayList。將Employee物件加入到一個collection並不是難事，因為Employee本身就是從System.Object所衍生。如果想從ArrayList中取出Employee物件，只能取得一個Object的參照，如同下面的程式碼：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Employee theEmployee = (Employee) myArrayList[1];還有一個更大的問題，沒有一個機制可以阻止把字串或其它型別的物件加入ArrayList中，如果你從沒想過要取得字串，你也不會去注意這個錯誤的型別。假設今天透過方法(method)，你希望存入Employee至ArrayList中，當method在執行時期試圖存入字串並轉成Employee型別，就會產生「例外」。最後一個問題，就是在.Net 1.X的collection中，加入數值型別的變數也會發生這個問題，數值型別會照前面的方法裝箱(be boxed)，也會被同樣的方法提取(unboxed)在.NET 2.0的新函式庫：System.Collection.Generic命名空間已經解決了這個問題。Generic collection變得更容易使用且能讓你指定型別。宣告時，編譯器只會允許一種型別加入list中。定義一個generic collections需使用一個特別的語法；這個語法使用一個角型括孤來表示。在這裡你不需要去思索從collection取回物件這個問題，因為你的code比起無型別的ArrayList，變得更安全、更容易去維護，而且更容易去使用。我該怎麼作？&nbsp;現在，打開你的Visual Studio 2005，並照著下面的範例Example 1-1作。http://www.dyu.edu.tw/~f9106007/CSharp/CreateATypeSafeList.rar&nbsp;發生了什麼事？&nbsp;範例程式產生了兩個類別，Employee：負責處理collection，Program：由Visual Studio 2005所產生出來的。同樣地也是使用由.NET Framework提供的List類別。Employee類別包含一個empID、建構以及經過覆寫(override)以用來回傳empID字串的ToString方法。首先宣告一個存放Employee的list實體empList，宣告方式如下：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List&lt;Employee&gt; empListList&lt;T&gt;這裡，T所表示的意思是目前宣告的List，所存放資料的型別為何。其實，empList只是一個參照到以new指令產生實體在堆積上(heap)的變數。new指令後面搭配建構子呼叫，如下列所示：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; new List&lt;Employee&gt;()這個動作會產生「存放Employee實體的list」的實體(存在於堆積)，你也可以將前述的兩個動作合在一起。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List&lt;Employee&gt; empList = new List&lt;Employee&gt;();接下來宣告第二個List，型別為「存放整數的List」：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List&lt;int&gt; intList = new List&lt;int&gt;();現在你可以任意的將整數加進intList或是把Employee加進empList裡。當list裡有了數筆資料，可以利用 foreach來檢視裡面的所有資料：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach(Employee employee in empList){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.Write(&ldquo;{0}&rdquo;, employee.ToString());}關於&hellip;&nbsp;如果試著將整數存進型別為Employee的list，會發生什麼事呢？將之前的程式稍作修改並重新編譯：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; empList.Add(i*5);接下來會有兩個錯誤產生：錯誤&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最符合的多載方法 'System.Collections.Generic.List&lt;CreateATypeSafeList.Employee&gt;.Add(CreateATypeSafeList.Employee)' 有一些無效的引數&nbsp;錯誤&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 引數 '1': 無法從 'int' 轉換為 'CreateATypeSafeList.Employee'&nbsp;上面的錯誤告訴我們不能將int的值加入型別為Employee的collection中，因為這其中的轉換是無效的。
	]]>
	</description>
	<content:encoded><![CDATA[
	<p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><strong><span style="font-family: 新細明體"><font size="2"><em>宣告安全型別的清單</em></font></span><span><font face="Times New Roman" size="2"><em>(list)</em>&nbsp;<br /></font></span></strong></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><font size="2"><span style="font-family: 新細明體">安全型別讓撰寫出來的程式碼更容易維護。安全型別的語言在編譯時期就找出</span><span><font face="Times New Roman">bug</font></span><span style="font-family: 新細明體">，而不是在執行時期才被發現。在</span><span><font face="Times New Roman">C# 1.X</font></span><span style="font-family: 新細明體">，宣告的</span><span><font face="Times New Roman">general collection(stack, list)</font></span><span style="font-family: 新細明體">是可以接受任何型別的變數。<br /><br /></span></font></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><font size="2"><span style="font-family: 新細明體">在</span><span><font face="Times New Roman">1.X</font></span><span style="font-family: 新細明體">版的</span><span><font face="Times New Roman">Framework</font></span><span style="font-family: 新細明體">中，</span><span><font face="Times New Roman">collection</font></span><span style="font-family: 新細明體">所存放的實體為</span><span><font face="Times New Roman">System.Object</font></span><span style="font-family: 新細明體">，且任何變數都源自於</span><span><font face="Times New Roman">System.Object</font></span><span style="font-family: 新細明體">，所以</span><span><font face="Times New Roman">collection</font></span><span style="font-family: 新細明體">可以取得任何型别的變數，換句話說，它並不安全。<br /><br /></span></font></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><font size="2"><span style="font-family: 新細明體">假如想宣告一個存放</span><span><font face="Times New Roman">Employee</font></span><span style="font-family: 新細明體">物件的</span><span><font face="Times New Roman">list</font></span><span style="font-family: 新細明體">，在</span><span><font face="Times New Roman">C# 1.X</font></span><span style="font-family: 新細明體">中，會使用到存放</span><span><font face="Times New Roman">System.Object</font></span><span style="font-family: 新細明體">物件的</span><span><font face="Times New Roman">ArrayList</font></span><span style="font-family: 新細明體">。將</span><span><font face="Times New Roman">Employee</font></span><span style="font-family: 新細明體">物件加入到一個</span><span><font face="Times New Roman">collection</font></span><span style="font-family: 新細明體">並不是難事，因為</span><span><font face="Times New Roman">Employee</font></span><span style="font-family: 新細明體">本身就是從</span><span><font face="Times New Roman">System.Object</font></span><span style="font-family: 新細明體">所衍生。如果想從</span><span><font face="Times New Roman">ArrayList</font></span><span style="font-family: 新細明體">中取出</span><span><font face="Times New Roman">Employee</font></span><span style="font-family: 新細明體">物件，只能取得一個</span><span><font face="Times New Roman">Object</font></span><span style="font-family: 新細明體">的參照，如同下面的程式碼：</span></font></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><span><font face="Times New Roman"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Employee theEmployee = (Employee) myArrayList[1];<br /></font></font></span></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><font size="2"><span style="font-family: 新細明體"><br />還有一個更大的問題，沒有一個機制可以阻止把字串或其它型別的物件加入</span><span><font face="Times New Roman">ArrayList</font></span><span style="font-family: 新細明體">中，如果你從沒想過要取得字串，你也不會去注意這個錯誤的型別。假設今天透過方法</span><span><font face="Times New Roman">(method)</font></span><span style="font-family: 新細明體">，你希望存入</span><span><font face="Times New Roman">Employee</font></span><span style="font-family: 新細明體">至</span><span><font face="Times New Roman">ArrayList</font></span><span style="font-family: 新細明體">中，當</span><span><font face="Times New Roman">method</font></span><span style="font-family: 新細明體">在執行時期試圖存入字串並轉成</span><span><font face="Times New Roman">Employee</font></span><span style="font-family: 新細明體">型別，就會產生「例外」。<br /><br /><br /></span></font></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><font size="2"><span style="font-family: 新細明體">最後一個問題，就是在</span><span><font face="Times New Roman">.Net 1.X</font></span><span style="font-family: 新細明體">的</span><span><font face="Times New Roman">collection</font></span><span style="font-family: 新細明體">中，加入數值型別的變數也會發生這個問題，數值型別會照前面的方法裝箱</span><span><font face="Times New Roman">(be boxed)</font></span><span style="font-family: 新細明體">，也會被同樣的方法提取</span><span><font face="Times New Roman">(unboxed)<br /><br /></font></span></font></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><font size="2"><span style="font-family: 新細明體">在</span><span><font face="Times New Roman">.NET 2.0</font></span><span style="font-family: 新細明體">的新函式庫：</span><span><font face="Times New Roman">System.Collection.Generic</font></span><span style="font-family: 新細明體">命名空間已經解決了這個問題。</span><span><font face="Times New Roman">Generic collection</font></span><span style="font-family: 新細明體">變得更容易使用且能讓你指定型別。宣告時，編譯器只會允許一種型別加入</span><span><font face="Times New Roman">list</font></span><span style="font-family: 新細明體">中。定義一個</span><span><font face="Times New Roman">generic collections</font></span><span style="font-family: 新細明體">需使用一個特別的語法；這個語法使用一個角型括孤來表示。<br /></span></font><font size="2"><span style="font-family: 新細明體"><br />在這裡你不需要去思索從</span><span><font face="Times New Roman">collection</font></span><span style="font-family: 新細明體">取回物件這個問題，因為你的</span><span><font face="Times New Roman">code</font></span><span style="font-family: 新細明體">比起無型別的</span><span><font face="Times New Roman">ArrayList</font></span></font><font size="2"><span style="font-family: 新細明體">，變得更安全、更容易去維護，而且更容易去使用。<br /><br /></span></font><font size="2"><br /></font></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><strong><font size="2"><span style="font-family: 新細明體">我該怎麼作？</span><span>&nbsp;<br /><br /><br /></span></font></strong></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><font size="2"><span style="font-family: 新細明體">現在，打開你的</span><span><font face="Times New Roman">Visual Studio 2005</font></span><span style="font-family: 新細明體">，並照著下面的範例</span><span><font face="Times New Roman">Example 1-1</font></span><span style="font-family: 新細明體">作。</span></font></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><span><font face="Times New Roman" size="2">http://www.dyu.edu.tw/~f9106007/CSharp/CreateATypeSafeList.rar&nbsp;<br /><br /><br /><br /></font></span></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><strong><span style="font-family: 新細明體"><font size="2">發生了什麼事？</font></span><span><font size="2">&nbsp;<br /><br /><br /></font></span></strong></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><font size="2"><span style="font-family: 新細明體">範例程式產生了兩個類別，</span><span><font face="Times New Roman">Employee</font></span><span style="font-family: 新細明體">：負責處理</span><span><font face="Times New Roman">collection</font></span><span style="font-family: 新細明體">，</span><span><font face="Times New Roman">Program</font></span><span style="font-family: 新細明體">：由</span><span><font face="Times New Roman">Visual Studio 2005</font></span><span style="font-family: 新細明體">所產生出來的。同樣地也是使用由</span><span><font face="Times New Roman">.NET Framework</font></span><span style="font-family: 新細明體">提供的</span><span><font face="Times New Roman">List</font></span><span style="font-family: 新細明體">類別。<br /><br /></span></font></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><font size="2"><span><font face="Times New Roman">Employee</font></span><span style="font-family: 新細明體">類別包含一個</span><span><font face="Times New Roman">empID</font></span><span style="font-family: 新細明體">、建構以及經過覆寫</span><span><font face="Times New Roman">(override)</font></span><span style="font-family: 新細明體">以用來回傳</span><span><font face="Times New Roman">empID</font></span><span style="font-family: 新細明體">字串的</span><span><font face="Times New Roman">ToString</font></span><span style="font-family: 新細明體">方法。<br /></span></font></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><font size="2"><span style="font-family: 新細明體"><br />首先宣告一個存放</span><span><font face="Times New Roman">Employee</font></span><span style="font-family: 新細明體">的</span><span><font face="Times New Roman">list</font></span><span style="font-family: 新細明體">實體</span><span><font face="Times New Roman">empList</font></span><span style="font-family: 新細明體">，宣告方式如下：</span></font></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><font size="2"><span><font face="Times New Roman"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>List&lt;Employee&gt; empList<br /><br /></font></span></font></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><font size="2"><span><font face="Times New Roman">List&lt;T&gt;</font></span><span style="font-family: 新細明體">這裡，</span><span><font face="Times New Roman">T</font></span><span style="font-family: 新細明體">所表示的意思是目前宣告的</span><span><font face="Times New Roman">List</font></span><span style="font-family: 新細明體">，所存放資料的型別為何。<br /><br /></span></font></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><font size="2"><span style="font-family: 新細明體">其實，</span><span><font face="Times New Roman">empList</font></span><span style="font-family: 新細明體">只是一個參照到以</span><span><font face="Times New Roman">new</font></span><span style="font-family: 新細明體">指令產生實體在堆積上</span><span><font face="Times New Roman">(heap)</font></span><span style="font-family: 新細明體">的變數。</span><span><font face="Times New Roman">new</font></span><span style="font-family: 新細明體">指令後面搭配建構子呼叫，如下列所示：</span></font></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><font size="2"><span><font face="Times New Roman"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>new List&lt;Employee&gt;()<br /><br /><br /></font></span></font></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><font size="2"><span style="font-family: 新細明體">這個動作會產生「存放</span><span><font face="Times New Roman">Employee</font></span><span style="font-family: 新細明體">實體的</span><span><font face="Times New Roman">list</font></span><span style="font-family: 新細明體">」的實體</span><span><font face="Times New Roman">(</font></span><span style="font-family: 新細明體">存在於堆積</span><span><font face="Times New Roman">)</font></span><span style="font-family: 新細明體">，你也可以將前述的兩個動作合在一起。</span></font></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><font size="2"><span><font face="Times New Roman"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>List&lt;Employee&gt; empList = new List&lt;Employee&gt;();<br /><br /><br /></font></span></font></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><font size="2"><span style="font-family: 新細明體">接下來宣告第二個</span><span><font face="Times New Roman">List</font></span><span style="font-family: 新細明體">，型別為「存放整數的</span><span><font face="Times New Roman">List</font></span><span style="font-family: 新細明體">」：</span></font></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><font size="2"><span><font face="Times New Roman"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>List&lt;int&gt; intList = new List&lt;int&gt;();<br /><br /><br /></font></span></font></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><font size="2"><span style="font-family: 新細明體">現在你可以任意的將整數加進</span><span><font face="Times New Roman">intList</font></span><span style="font-family: 新細明體">或是把</span><span><font face="Times New Roman">Employee</font></span><span style="font-family: 新細明體">加進</span><span><font face="Times New Roman">empList</font></span><span style="font-family: 新細明體">裡。當</span><span><font face="Times New Roman">list</font></span><span style="font-family: 新細明體">裡有了數筆資料，可以利用</span><span><font face="Times New Roman"> foreach</font></span><span style="font-family: 新細明體">來檢視裡面的所有資料：</span></font></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><span><font face="Times New Roman"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>foreach(Employee employee in empList)</font></font></span></p><p style="margin: 0cm 37.2pt 0pt 0cm; text-indent: 24pt" class="MsoNormal"><span><font face="Times New Roman" size="2">{</font></span></p><p style="margin: 0cm 37.2pt 0pt 0cm; text-indent: 24pt" class="MsoNormal"><span><font face="Times New Roman"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Console.Write(&ldquo;{0}&rdquo;, employee.ToString());</font></font></span></p><p style="margin: 0cm 37.2pt 0pt 0cm; text-indent: 24pt" class="MsoNormal"><span><font face="Times New Roman" size="2">}<br /><br /><br /><br /></font></span></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><strong><span style="font-family: 新細明體"><font size="2">關於</font></span><span><font face="Times New Roman" size="2">&hellip;&nbsp;<br /><br /><br /></font></span></strong></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><font size="2"><span style="font-family: 新細明體">如果試著將整數存進型別為</span><span><font face="Times New Roman">Employee</font></span><span style="font-family: 新細明體">的</span><span><font face="Times New Roman">list</font></span><span style="font-family: 新細明體">，會發生什麼事呢？將之前的程式稍作修改並重新編譯：</span></font></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><span><font face="Times New Roman"><font size="2"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>empList.Add(i*5);</font></font></span></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><span style="font-family: 新細明體"><font size="2">接下來會有兩個錯誤產生：</font></span></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><font size="2"><u><span style="font-family: 新細明體">錯誤</span><span><font face="Times New Roman"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>1<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></u><u><span style="font-family: 新細明體">最符合的多載方法</span><span><font face="Times New Roman"> 'System.Collections.Generic.List&lt;CreateATypeSafeList.Employee&gt;.Add(CreateATypeSafeList.Employee)' </font></span></u><u><span style="font-family: 新細明體">有一些無效的引數</span><span>&nbsp;<br /><br /><br /></span></u></font></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><font size="2"><u><span style="font-family: 新細明體">錯誤</span><span><font face="Times New Roman"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>2<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></u><u><span style="font-family: 新細明體">引數</span><span><font face="Times New Roman"> '1': </font></span></u><u><span style="font-family: 新細明體">無法從</span><span><font face="Times New Roman"> 'int' </font></span></u><u><span style="font-family: 新細明體">轉換為</span><span><font face="Times New Roman"> 'CreateATypeSafeList.Employee'&nbsp;<br /><br /><br /></font></span></u></font></p><p style="margin: 0cm 37.2pt 0pt 0cm" class="MsoNormal"><font size="2"><span style="font-family: 新細明體">上面的錯誤告訴我們不能將</span><span><font face="Times New Roman">int</font></span><span style="font-family: 新細明體">的值加入型別為</span><span><font face="Times New Roman">Employee</font></span><span style="font-family: 新細明體">的</span><span><font face="Times New Roman">collection</font></span><span style="font-family: 新細明體">中，因為這其中的轉換是無效的。</span></font></p>		]]>
	</content:encoded>
	<link>http://blog.roodo.com/sholfen/archives/2577958.html</link>
	<guid>http://blog.roodo.com/sholfen/archives/2577958.html</guid>
	<category>翻譯文章</category>
	<pubDate>Mon, 26 Sep 2005 09:44:00 +0800</pubDate>
</item>
</channel>
</rss>