用默认值初始化队列或堆栈

本文关键字:堆栈 队列 初始化 默认值 | 更新日期: 2023-09-27 17:50:30

你可以用预设值初始化一个列表:

List<int> L1 = new List<int> {1, 2, 3};

是否有一个等价的Queue?我的想法是:

Queue<int> Q1 = new Queue<int> {1, 2, 3};

不起作用。有什么变通办法吗?

Queue<int> Q1 = new Queue<int>();
Q1.Enqueue(1);
Q1.Enqueue(2);
Q1.Enqueue(3);

是唯一有效的解吗?

用默认值初始化队列或堆栈

使用构造函数Queue<T> Constructor (IEnumerable<T>)

Queue<int> Q1 = new Queue<int>(new[] { 1, 2, 3 });

List<int> list = new List<int>{1, 2, 3 };
Queue<int> Q1 = new Queue<int>(list);

参见:http://blogs.msdn.com/b/madst/archive/2006/10/10/what-is-a-collection_3f00_.aspx特别是:

这个新语法的含义仅仅是创建的实例MyNames使用它的无参数构造函数(构造函数参数可以是),并调用它的Add方法字符串。

最终的语言设计是一种"基于模式"的方法。我们依赖对于使用特定名称作为其方法的用户而言编译器在编写时没有检查。如果他们去改变在一个程序集中添加到AddPair的名称,编译器不会抱怨这个,而是抱怨集合初始化器坐在其他地方突然错过了一个过载的呼叫。

队列不支持Add方法,因此不能用短表达式样式语法初始化。这是一个设计上的选择。幸运的是,您可以将集合传递给Queue的构造函数。

试试这个

Queue<int> Q1 = new Queue<int>(new int[] { 1, 2, 3} );