2020年11月1日 星期日

小山的 C# 教學 - 第 50 課 - 泛型 (Generics) 的初步介紹

本課簡介

本課開始正式介紹泛型 (Generics)
泛型不只在 C# 中,在其他程式語言也是很重要的語法
透過泛型可以大幅減少重複的程式碼
同時更進一步提升程式碼的彈性


教學影片

注意:影片有高畫質 720P 的選項,可以看得更清楚喔!


重點提示
  1. 泛型可以想成是「暫時替代型別的 placeholder」,讓程式設計師可以暫時不用決定某些型別要放甚麼
  2. 泛型限制了泛型符號的位置只能用同一個型別,而不能同時代表多個型別 (例如本課的 Building<P> 的 P 不能同時代表 Worker 及 Resident)
  3. 所有的 class 都有個共通的基底類別 (base class),就是 Object
  4. 每個 class 因為都繼承自 Object,因此都有 ToString 這個 method

課程補充

所有 class 共通的基底類別 Object

C# 預設讓每一個 class 都會自動繼承 Object。 換句話說,C# 中所有類別都是 Object 這個 class 的衍生類別。 這是為了要確保每一個 C# 中的物件都有一些共通的 method。 像是 Equals(Object)、ToString()、GetHashCode() 等等。 這也是為什麼本課中,在一開始實作 Building 時只要宣告輸入 Object,就可以將 Worker 跟 Resident 餵進去。 同時也是為什麼必須要 override ToString(),因為 Object 本來就有個 ToString() method。

相關資訊連結


2 則留言:

  1. 小山的教學真的很淺顯易懂!引頸期盼進階的generic教學~
    另外想請問,有collection的相關教學嗎?(之前garbage collection只有淺談了一下有這機制但沒什麼提到collection的運作原理或使用方法)
    謝謝~~

    回覆刪除
  2. 小山,您好,這個問題並非您教的範圍內,但我真的不知該如何解決!!當我寫 using System.IO.Ports時,Ports並沒有在內,若硬寫是不會出現錯誤,但建立serialPort comPort = new serialPort();會顯示錯誤,請幫我解答嗎???

    回覆刪除