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