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

csharp_stack.html