星期五, 7月 29, 2022

[C#] Stack

對於 Stack 認知,只停留在後進先出 (LIFO) 觀念,剛好在社群討論上時有提到,根據官方文章 -  Stack<T> 來理解基礎使用並筆記
void Main()
{
	Stack<string> stack1 = new Stack<string>();

	if (stack1.TryPop(out string result) == false)
		"stack1 目前為空值,無法取值".Dump("Stack.TryPop() 使用");

	stack1.Push("one");
	stack1.Push("two");
	stack1.Push("three");
	stack1.Push("four");
	stack1.Push("five");

	stack1.Dump("顯示 stack 內元素,後進先出 (LIFO) 特色");

	stack1.Pop().Dump("Pop:第一次取值");
	stack1.Peek().Dump("Peek:下一次取值的資料");
	stack1.Pop().Dump("Pop:第二次取值");

	// 建構子接受參數為 IEnumerable<T>,透過它來建立 Stack2
	// stack1 經過上述兩次取值後,只剩下三筆資料 - three,two,one,
	// 因為後進先出 (LIFO) 特色,dump 出來後就又變成正向 one,two,three
	Stack<string> stack2 = new Stack<string>(stack1.ToArray());

	stack2.Dump("stack2 內容");
	@$"stack2.Contains(""four"") = {stack2.Contains("four")}".Dump("是否包含 four");

	// Create an array twice the size of the stack and copy the
	// elements of the stack, starting at the middle of the array.
	string[] array3 = new string[stack1.Count * 2];
	stack1.CopyTo(array3, stack1.Count);
	Stack<string> stack3 = new Stack<string>(array3);
	stack3.Dump("CopyTo():stack3 內容,包含 nulls");

	stack2.Clear();
	stack2.Count.Dump("使用 Clear() 清空 stakc2 並列出 stack2.Count 確認");
}
執行結果

[C#] Stack

沒有留言:

張貼留言