新建一个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. 全栈JavaScript之路(十三)了解 ElementTraversal 规范

    支持Element Traversal 规范的浏览器有IE 9+.Firefox 3.5+.Safari 4+.Chrome 和Opera 10+. 对于元素间的空格,在IE9之前.都不会返回文档节点 ...

  2. 使用增强for循环遍历集合的时候操作集合的问题?

    // 遍历一个list public static void printList(List<String> list){ for (String string : list) { list ...

  3. linux 浏览查看文件more,less,head,tail,cat,tac,od,nl命令使用简介

    参考:linux 基本命令详解 cat,tac,nl,more,less,head,tail,od 命令more,less,head,tail,cat,tac,od,nl等是是使用Linux系统常用的 ...

  4. 转: javascript动态添加、修改、删除对象的属性和方法

    在其他语言中,对象一旦生成,就不可更改了,要为一个对象添加修改成员必须要在对应的类中修改,并重新实例化,而且程序必须经过重新编译.JavaScript 中却非如此,它提供了灵活的机制来修改对象的行为, ...

  5. 设置Adobe Reader打开PDF文件保持记忆功能

    设置Adobe Reader打开PDF文件保持记忆功能 打开菜单“编辑”->“首选项”. 选择种类中的“文档”,在“打开设置”区域勾上“重新打开文档时恢复上次视图设置(R)”,确定之后就可以在下 ...

  6. FA_会计中的折旧方式的种类(概念)

    2014-06-08 Created By BaoXinjian

  7. Android判断当前网络是否可用--示例代码

    Android判断当前网络是否可用--示例代码 分类: *07 Android 2011-05-24 13:46 7814人阅读 评论(4) 收藏 举报 网络androiddialogmanagern ...

  8. Unix环境高级编程(十二)线程控制

    本章介绍了一个进程中多个线程之间如何保持数据的似有性及进程的系统调用如何与线程进行交互. 1.线程限制: Single Unix定义了一线线程操作的限制,和其他的限制一样,可以通过sysconf来查询 ...

  9. cocos2dx 3.x ccPositionTextureColor_vert与ccPositionTextureColor_noMVP_vert

    在cocos2dx 2.x中,如果我们要对sprite更换片段shader,写成: myProgram->initWithByteArrays(ccPositionTextureColor_ve ...

  10. 关于java集合类TreeMap的理解(转)

    概要 这一章,我们对TreeMap进行学习. 转载请注明出处:http://www.cnblogs.com/skywang12345/admin/EditPosts.aspx?postid=33109 ...