• 【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()来丢掉列头的元素。

  • 相关阅读:
    读书笔记之复盘
    读书笔记之大话设计模式
    代码重构之重命名
    代码重构之下降方法
    代码重构之提升方法
    代码重构之移动方法
    代码重构之封装集合
    JSON之实体对象转JSON字符串,字段名全部转为小写
    SQL代码之多组织数据汇总成树形表格展示
    Python socket学习笔记(三)
  • 原文地址:https://www.cnblogs.com/guxin/p/csharp-use-queue-implement-undo.html
Copyright © 2020-2023  润新知