新建一个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()来丢掉列头的元素。

【C#】Queue的简单试用的更多相关文章

  1. (C#)使用队列(Queue)解决简单的并发问题

    (C#)使用队列(Queue)解决简单的并发问题 2015-07-16 13:04 13265人阅读 评论(8) 收藏 举报  分类: Asp.Net(8)  版权声明:本文为博主原创文章,未经博主允 ...

  2. 【数据结构】 Queue 的简单实现

    [数据结构] Queue 的简单实现 public class XQueue<T> { /// <summary> /// 第一个元素 /// </summary> ...

  3. jQuery无刷新上传之uploadify简单试用

    先简单的侃两句:貌似已经有两个月的时间没有写过文章了,不过仍会像以前那样每天至少有一至两个小时是泡在园子里看各位大神的文章.前些天在研究“ajax无刷新上传”方面的一些插件,用SWFUpload实现了 ...

  4. 团体队列UVA540 Team Queue(队列简单用法)

    题目背景 队列和优先级队列是大多数计算机科学家都知道的数据结构.但是团队队列却不被人熟知,尽管在生活中经常出现.比如,午餐时间的食堂门口的队列就是一个团队队列.在一个团队队列中,每个元素属于一个团队. ...

  5. apache airflow docker 运行简单试用

    airflow 是一个编排.调度和监控workflow的平台,由Airbnb开源,现在在Apache Software Foundation 孵化. airflow 将workflow编排为tasks ...

  6. rabbit的简单搭建,java使用rabbitmq queue的简单例子和一些坑

    一 整合 由于本人的码云太多太乱了,于是决定一个一个的整合到一个springboot项目里面. 附上自己的项目地址https://github.com/247292980/spring-boot 以整 ...

  7. cloudevents js sdk 简单试用

    cloudevents 目前官方提供了不同语言的sdk,以下是js 的简单学习试用,从目前来说更新不是很好 clone 代码 git clone https://github.com/cloudeve ...

  8. podium micro-frontends 简单试用

    以下是一个简单的podium 试用,包含了layout 以及podlets,使用docker 运行 podium 主要包含了两大部分 podlets 片段服务 layouts 片段组合服务 环境准备 ...

  9. Visual Studio Code 的简单试用体验

    首先对Visual Studio Code做一个大概的介绍.首先明确一下,这个Visual Studio Code(以下简称 vscode)是一个带GUI的代码编辑器,也就是只能完成简单的代码编辑功能 ...

随机推荐

  1. 搭建Hexo博客并部署到Github

    参考: http://www.jianshu.com/p/a67792d93682 http://jingyan.baidu.com/article/d8072ac47aca0fec95cefd2d. ...

  2. 常用jdbc操作

    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");   Connection con = DriverMa ...

  3. 房产地图google map的初步应用点滴.4)(转)

    房产地图google map的初步应用点滴.1) 房产地图google map的初步应用点滴.2) 房产地图google map的初步应用点滴.3) 房产地图google map的初步应用点滴.4) ...

  4. c# 网站生成静态页面

    在一些需要经常更新页面数据的网站中,一般访问量不是很大的都直接发布的是带后台代码,每次访问都是有数据库交互的.但是一旦访问量增加了,那么这些服务器开销变成本就要考虑进来了,像一些文章,后台编辑后,文章 ...

  5. javascript中function和object的区别,以及javascript如何实现面向对象的编程思想.

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  6. 像素(px)到底是个什么单位

    px,对于许多网页设计者来说,是最常用的CSS长度单位.然而,1px到底多长,恐怕没有多少人回答得上来. CSS长度本身有绝对长度和相对长度的区分. cm.pt之类的都是绝对长度,它们是物理长度——1 ...

  7. pythonl练习笔记——PythonNet 套接字socket

    1 套接字socket 1.1 套接字概述 套接字,一种网络通讯工具:用于进行网络间的通信,是一种特殊文件类型, 套接字,是一个通信链的句柄,用于描述IP地址和端口,实现向网络发出请求或应答网络请求. ...

  8. linux内核线程,进程,线程

    http://blog.csdn.net/dyllove98/article/details/8917197 Linux对于内存的管理涉及到非常多的方面,这篇文章首先从对进程虚拟地址空间的管理说起.( ...

  9. Linux内核同步 - Seqlock

    一.前言 普通的spin lock对待reader和writer是一视同仁,RW spin lock给reader赋予了更高的优先级,那么有没有让writer优先的锁的机制呢?答案就是seqlock. ...

  10. Note for video Machine Learning and Data Mining——training vs Testing

    Here is the note for lecture five. There will be several points  1. Training and Testing  Both of th ...