2005年09月30日
TGRE與研究所
要考研究所,筆試我是絕對沒辦法的。但是推甄,我究竟有多少實力呢?我高中的時候沒參加過口試,這次有沒有機會參加口試?我很希望能參加,能不能上對我來說不是重點,我只是體驗一下那種感覺。說實在的,就算考上研究所,就能保證以後的工作會比較好嗎?台灣的軟體產業不發達,很多公司好像都是靠駭客在賺錢的。像我這種以軟體工程為信仰的人,在台灣能活下去嗎?
我最大的夢想是當遊戲製作人,在那之前,得從程式人員作起。但是就像前面所提的,台灣對軟體工程極度不重視而且也較短視近利,這導致了遊戲產業甚至軟體業的不發達。不要說遊戲業了,就算我放棄夢想,去當一個元件設計師,能保證以後嗎?現在軟體工具愈來愈簡單了,資訊人員的價值在哪?我只會用微軟的東西,只會用那種傻瓜軟體來寫程式,我的未來究竟在哪呢?
或許就像哲嘉所提的,以後來去當操偶師,不過我的手這麼小,希望霹靂能收留我啊!不然嘉佑公司也可以,我還蠻喜歡神魔系列的布袋戲。不然來去幫霹靂設計武戲也行,不過我不是念視傳的.....stO
寫了一堆廢話,我的作文能力好像愈來愈差了,感謝大家耐心看完。
2005年09月27日
無力感
ㄚ建跟我說,就算他肯幫忙,但也沒人能幫忙宣傳、作道具。社團一直都很缺美工人員。之前雖然有設院的同學加入,但設院的同學都很忙,也不可能強迫別人來幫忙。前任美工啊!妳還是快點回來吧,在社團的事情上,我希望妳能趕快回來........(這樣講會不會怪怪的)
不只社團,其它事也是,一直沒動力作。我發現,跟別人一起作事時,如果跟對方沒有交集,作起事情很沒力,這不是誰的問題,而是大家都不知道要怎麼溝通,各人有各人的想法,有時候自己很缺乏處事的智慧。算了不想太多了,總之加油吧.....
2005年09月26日
[C# 2.0]創造屬於自己的Generic Collection
創造屬於自己的Generic Collection
.Net 2.0提供一些generic collection類別給list、堆疊、佇列以及字典等等資料結構使用。事實上,這些這些類別所提供的遠大於您程式上的需求。但有時還是會另外自訂資料結構作為特殊的用途,而不用現成的()。這是目前程式語言以及Framework所要作到的目標。
我該怎麼作?
(待續)
[C# 2.0]使用Generic Collection 宣告安全型別的清單
宣告安全型別的清單(list)
安全型別讓撰寫出來的程式碼更容易維護。安全型別的語言在編譯時期就找出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的參照,如同下面的程式碼:
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,變得更安全、更容易去維護,而且更容易去使用。
我該怎麼作?
現在,打開你的Visual Studio 2005,並照著下面的範例Example 1-1作。
http://www.dyu.edu.tw/~f9106007/CSharp/CreateATypeSafeList.rar
發生了什麼事?
範例程式產生了兩個類別,Employee:負責處理collection,Program:由Visual Studio 2005所產生出來的。同樣地也是使用由.NET Framework提供的List類別。
Employee類別包含一個empID、建構以及經過覆寫(override)以用來回傳empID字串的ToString方法。
首先宣告一個存放Employee的list實體empList,宣告方式如下:
List<Employee> empList
List<T>這裡,T所表示的意思是目前宣告的List,所存放資料的型別為何。
其實,empList只是一個參照到以new指令產生實體在堆積上(heap)的變數。new指令後面搭配建構子呼叫,如下列所示:
new List<Employee>()
這個動作會產生「存放Employee實體的list」的實體(存在於堆積),你也可以將前述的兩個動作合在一起。
List<Employee> empList = new List<Employee>();
接下來宣告第二個List,型別為「存放整數的List」:
List<int> intList = new List<int>();
現在你可以任意的將整數加進intList或是把Employee加進empList裡。當list裡有了數筆資料,可以利用 foreach來檢視裡面的所有資料:
foreach(Employee employee in empList)
{
Console.Write(“{0}”, employee.ToString());
}
關於…
如果試著將整數存進型別為Employee的list,會發生什麼事呢?將之前的程式稍作修改並重新編譯:
empList.Add(i*5);
接下來會有兩個錯誤產生:
錯誤 1 最符合的多載方法 'System.Collections.Generic.List<CreateATypeSafeList.Employee>.Add(CreateATypeSafeList.Employee)' 有一些無效的引數
錯誤 2 引數 '1': 無法從 'int' 轉換為 'CreateATypeSafeList.Employee'
上面的錯誤告訴我們不能將int的值加入型別為Employee的collection中,因為這其中的轉換是無效的。
台灣與大陸的計算機名詞對照(持續更新)
變數宣告 = 變數聲明
回傳值 = 返回值
程式 = 程序
樣板 = 模板
讀取陣列每個元素 = 遍歷陣列
固定長度 = 定長
??? = 深層拜訪
??? = 魯棒性
2005年09月23日
繼續混吃等死
我還在繼續墮落中,一樣啥事都不想作。其實還有一堆書沒看,翻譯還沒作,不過真的很懶。專題還沒弄好,不過這部份我更無力,因為一些因素,讓我對這個實在是沒啥信心。
這學期的課表,原本課排得很滿。不過後來把星期五的課全退了,星期一也只有下午一節課。這樣就幾乎是週休四日了。星期三原本要上資管的課,不過我把計算機組織這堂給調開了,所以組長抱歉啦!沒辦法陪你上課。
課表排得空空的,多留些時間給自己,無非是希望能再多學些東西。但是這學期重修的工數,讓我覺得大概又得把時間花在考試上了。工數被當真的是生人的污點啊!大學的第一個後悔,就是工數沒學好........QQ~

