C# Stack:堆栈

在 C# 中,堆栈(Stack)类表示一个后进先出的对象集合,当您需要对项目进行后进先出的访问时,则可以使用堆栈。向堆栈中添加元素称为推入元素,从堆栈中移除元素称为弹出元素。

Stack 类中的属性

下表列出了 Stack 类中一些常用的属性:

属性 描述
Count 获取堆栈中包含的元素个数
IsSynchronized 判断是否同步对堆栈的访问(线程安全)
SyncRoot 获取可用于同步对堆栈访问的对象

Stack 类中的方法

下表列出了 Stack 类中一些常用的方法:

方法名 描述
public virtual void Clear() 从堆栈中移除所有的元素
public virtual bool Contains(object obj) 判断某个元素是否在堆栈中
public virtual object Peek() 返回在堆栈顶部的对象,但不移除它
public virtual object Pop() 移除并返回在堆栈顶部的对象
public virtual void Push(object obj) 向堆栈顶部添加一个对象
public virtual object[] ToArray() 复制堆栈到一个新的数组中

关于 Stack 类中的完整属性和方法介绍,可以查阅 C# 官方文档

【示例】下面通过示例演示 Stack 类属性和方法的使用:
using System;
using System.Collections;

namespace c.biancheng.net
{
    class Demo
    {
        static void Main(string[] args){
            Stack st = new Stack();

            st.Push('A');
            st.Push('B');
            st.Push('C');
            st.Push('D');
          
            Console.WriteLine("当前堆栈中的元素:");
            foreach (char c in st){
                Console.Write(c + " ");
            }
            Console.WriteLine();
          
            st.Push('E');
            st.Push('F');
            Console.WriteLine("堆栈中下一个可弹出的值:\r\n{0}", st.Peek());
            Console.WriteLine("当前堆栈中的元素:");         
            foreach (char c in st){
               Console.Write(c + " ");
            }
            Console.WriteLine();

            Console.WriteLine("删除值下面的值:");
            Console.Write(st.Pop() + " ");
            Console.Write(st.Pop() + " ");
            Console.Write(st.Pop() + " " + "\r\n");
          
            Console.WriteLine("当前堆栈中的元素:");
            foreach (char c in st){
               Console.Write(c + " ");
            }
        }
    }
}
运行结果如下:

当前堆栈中的元素:
D C B A
堆栈中下一个可弹出的值:
F
当前堆栈中的元素:
F E D C B A
删除值下面的值:
F E D
当前堆栈中的元素:
C B A