iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 20
1
自我挑戰組

.net 後端起手式 30天認識 C# 系列 第 20

Day 20 泛型集合類別(二)

泛型集合類別

接續昨天的話題我們繼續。

Stack<T>

堆疊類型,設計成後入先出的集合。

https://raw.githubusercontent.com/MMiooiMM/learn-csharp-in-30-days/master/figures/20/01.png

初始化上圖的 Stack 我們先

var stack = new Stack<string> ();
stack.Push ("Mio");
stack.Push ("Miffy");
stack.Push ("Lulu");

由於 Stack 沒有 Add 方法,所以不能像前兩個一樣直接賦值。

上方表示新增元素 Push ()

stack.Push ("Lulu");

下方表示取出元素 Pop ()

stack.Pop ();

根據圖片我們可以更加了解如何使用 Stack,而上述兩種方法都會對 Stack 的元素產生影響,如果要查詢元素時,我們可以使用 Peek () 來確認最上面的元素,也可以使用 Contains () 來確認適合有符合的元素,當然要拿元素出來,還是要根據規則一個一個吐出。

Queue<T>

佇列類型,設計成先入先出的集合。

https://raw.githubusercontent.com/MMiooiMM/learn-csharp-in-30-days/master/figures/20/02.png

一樣初始化上圖的 Queue

var queue = new Queue<string> ();
queue.Enqueue ("Mio");
queue.Enqueue ("Miffy");
queue.Enqueue ("Lulu");

Queue 一樣沒有 Add 方法。

上方表示新增元素 Enqueue ()

queue.Enqueue ("Lulu");

下方表示取出元素 Dequeue ()

queue.Dequeue ();

上述兩種方法一樣都會對 Queue 的元素產生影響,查詢的方法與 Stack 一樣。

一些小結論

簡單介紹四個常用的集合類別,這邊簡單的說一下個人的使用時機,有明確的對照行為,並且要求 Key 值不能重複時,可以使用 Dictionary。而今天介紹的這兩個則是以需求為主,除非內容需以加入順序排列,否則一般不會考慮。不知道用啥就是使用 List。當然只是個人感想而已。

雖然沒有介紹裝箱拆箱,但因為裝箱拆箱的原因,在撰寫程式碼時,建議優先選擇泛型版本,有些集合允許非泛型版本(存放於System.Collections),在編譯時也能強制型別檢查,所以泛型版本可以說是比較快也比較安全。

參考連結
C# 裝箱和拆箱[整理](轉) - 掃文資訊


上一篇
DAY 19 泛型集合類別
下一篇
DAY 21 迭代器
系列文
.net 後端起手式 30天認識 C# 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言