【C#】Queue的简单试用

新建一个WPF项目,测试C#的Queue类的简单使用。

前台准备两个按钮
MainWindow.xaml

<StackPanel VerticalAlignment="Center">
    <Button Content="加一个元素" Click="Add"/>
    <Button Content="查看队列" Click="Show"/>
</StackPanel>

后台代码:
MainWindow .xaml.cs

public partial class MainWindow : Window
{
    Queue<int> queue;
    int i = 0;

    public MainWindow()
    {
        InitializeComponent();
        queue = new Queue<int>(3); // 初始化的容量为3
    }

    private void Add(object sender, RoutedEventArgs e)
    {
        // 往Queue中添加一个元素
        queue.Enqueue(i);
        i++;
    }

    private void Show(object sender, RoutedEventArgs e)
    {
        // 查看Queue中的所有元素
        string result = null;
        foreach (var item in queue)
        {
            result += " " + item;
        }
        MessageBox.Show(result);
    }
}

测试:
通过点击【添加】和【查看】来观察Queue队列中的内容。可以发现, 虽然Queue初始化容量为3,但依然可以加入多于3个元素。当加入了4个元素时,打印结果如下:
这里写图片描述

需求:
要做撤销(Undo)和重做(Redo)功能,考虑用一个Queue队列来保存操作的命令(而不是整个被操作对象的所有数据),如果只允许撤销N步,那么就需要这个Queue队列有一个最大的长度。

小结:
所以,如果想要确保Queue的长度,需要在加入新的元素时判断当前的Queue队列长度,如果超过一个预设的值,可以使用Queue.Dequeue()来丢掉列头的元素。

原文地址:https://www.cnblogs.com/guxin/p/csharp-use-queue-implement-undo.html