您可以使用预先放置的值初始化列表:
List<int> L1 = new List<int> {1, 2, 3};
队列有上面的等价物吗?我的想法是:
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 方法。
和
由此产生的语言设计是一种“基于模式”的方法。我们依赖用户为其方法使用特定名称,编译器在编写时不会对其进行检查。如果他们在一个程序集中更改 Add to AddPair 的名称,编译器不会抱怨这一点,而是会抱怨位于其他地方的集合初始化程序突然缺少要调用的重载。
队列不支持 Add 方法,因此无法使用短表达式样式语法进行初始化。这确实是设计上的选择。幸运的是,您可以将集合传递给队列的构造函数。
试试这个
Queue<int> Q1 = new Queue<int>(new int[] { 1, 2, 3} );