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