網頁

集合與泛型之日常生活範例

突然靈光一閃,有通的感覺。

剛接觸「泛型」時,實在看不懂、聽不通,但接擉時間久一些,才慢慢了解「泛型」原來如此。一般在談到泛型之前都會先談集合,談完集合在談泛型。使用一樣的過程,我想用一些生活中的範例來舉例,讓大家更了解什麼是泛型。

我們生活上有很多「集合」名詞,例如:「人」、「鳥」、「動物」、「植物」、「昆蟲」、「魚」…等,以英文來解釋集合名詞:「一群相似也相關的個體結合而成的集合體,稱為集合名詞。」

例如:

  • 「人」有:男人、女人、白種人、黃種人、黑人、大人、小孩、老人…這些都都稱為「人」,所以人是一個集合名詞。
  • 「鳥」:依網路查詢的結果,全世界鳥的種類有9000多種,但我們可以通稱這9000多種的鳥類為「鳥」,什麼鳥?不知道!但我知道它是鳥。
所以程式上的集合也是用這樣的觀念來進行。

假設有一天我們要開一間溫泉旅館,但溫泉分男湯、女湯,這時候你就不能用集合的觀念來操作,不能說你是人,所以要進去女湯,也一樣不能說妳是人,所以要進去男湯,這時候就必須以更明確分類,來分類這個集合。只有男人的集合,可以進去男湯,女人的集合,可以進去女湯,男人可以是大人、老人、小孩、白種人、黃種人、黑人…只要是男人;女人同義。

用這樣的思考來想泛型,應該就能想通了,我可以這樣使用泛型:

Dim man As New ArrayList(Of SuperMan)()

我希望這個泛型集合不只是男人,而且是「男人中的男人」。

或是我們這樣說:

  • 集合:較無限制。
  • 泛型:有限制性。
「人」的集合,管你什麼人,活的、死的…通通可以包進來。但如果我經營「葬儀社」,很明顯,我要的集合只有一種,有呼吸的我都不要,沒呼吸的我都想要,這時候就是泛型出馬,把沒呼吸通通包進來,而不是「人」我都想要,泛型就可以解決我的問題。

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。