C# 堆栈 - Pop() 方法
C# Stack 的 Pop() 方法用于移除并返回栈顶的对象。栈遵循后进先出 (LIFO) 原则,即最先添加的对象会被移除。
此方法与 Peek 方法类似,但 Peek 方法不会修改堆栈。
语法
以下是 C# Stack 的 Pop() 方法的语法 -
public virtual object? Pop();
参数
此方法不接受任何参数。
返回值
此方法返回从堆栈顶部移除的对象。
示例 1:从堆栈中移除并返回顶部元素
以下是 Pop() 方法的基本示例,用于移除堆栈顶部的元素并将其返回 -
using System; using System.Collections.Generic; class Example1 { static void Main() { Stack<int> numbers = new Stack<int>(); // 将元素压入堆栈 numbers.Push(10); numbers.Push(20); numbers.Push(30); Console.WriteLine("Popped Element: " + numbers.Pop()); Console.WriteLine("Popped Element: " + numbers.Pop()); // 剩余堆栈元素 Console.WriteLine("Elements left in stack: " + numbers.Count); } }
输出
以下是输出 -
Popped Element: 30 Popped Element: 20 Elements left in stack: 1
示例 2:处理空的情况
我们来看另一个 Pop() 方法的示例。这里,我们首先检查计数,如果计数大于 1,则从堆栈中移除元素 -
using System; using System.Collections.Generic; class Example1 { static void Main() { Stack<int> numbers = new Stack<int>(); // 将元素压入堆栈 numbers.Push(10); numbers.Push(20); numbers.Push(30); if (numbers.Count > 0) { int topElement = numbers.Pop(); Console.WriteLine("Popped: " + topElement); } else { Console.WriteLine("Stack is empty, cannot pop."); }; // 剩余堆栈元素 Console.WriteLine("Elements left in stack: " + numbers.Count); } }
输出
以下是输出 -
Stack after Pop operations: C# World Hello
示例 3:从栈顶弹出字符串
以下示例使用 Pop() 方法从栈顶弹出字符串 -
using System; using System.Collections.Generic; class Example1 { static void Main() { Stack<string> stack = new Stack<string>(); // 将元素压入堆栈 stack.Push("Pvt LTD"); stack.Push("India"); stack.Push("Tutorialspoint"); if (stack.Count > 0) { string topElement = stack.Pop(); Console.WriteLine("Popped: " + topElement); } else { Console.WriteLine("Stack is empty, cannot pop."); } // 剩余堆栈元素 Console.WriteLine("Elements left in stack: " + stack.Count); } }
输出
以下是输出 -
Popped: Tutorialspoint Elements left in stack: 2
示例 4:使用 Pop 方法的撤消功能
在此示例中,我们使用 Pop 方法在堆栈中创建撤消功能,我们可以移除最后更新的对象 -
using System; using System.Collections.Generic; class Example4 { static void Main() { Stack<string> undoStack = new Stack<string>(); // 模拟文本变化 undoStack.Push("Hello"); undoStack.Push("Hello, World!"); undoStack.Push("Hello, World! How are you?"); undoStack.Push("Hello, World! How are you? I am fine."); Console.WriteLine("Current Text: " + undoStack.Peek()); // 撤消上一个操作(弹出上一个更改) Console.WriteLine("Undoing last change..."); undoStack.Pop(); // 显示更新后的文本 Console.WriteLine("After Undo: " + undoStack.Peek()); // 再次撤消 Console.WriteLine("Undoing one more change..."); undoStack.Pop(); Console.WriteLine("After Undo: " + undoStack.Peek()); // 堆栈中剩余的内容// 堆栈中剩余的内容 Console.WriteLine("Remaining elements in Undo Stack: " + undoStack.Count); } }
输出
以下是输出 -
Current Text: Hello, World! How are you? I am fine. Undoing last change... After Undo: Hello, World! How are you? Undoing one more change... After Undo: Hello, World! Remaining elements in Undo Stack: 2