可以与预置值初始化的列表:使用默认值初始化队列或堆栈?
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);
唯一有效的解决方案吗?
可以与预置值初始化的列表:使用默认值初始化队列或堆栈?
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);
试试这个
Queue<int> Q1 = new Queue<int>(new int[] { 1, 2, 3});
见:http://blogs.msdn.com/b/madst/archive/2006/10/10/what-is-a-collection_3f00_.aspx特别:
此新语法的含义仅仅是使用其无参数构造函数创建一个实例 MyNames(如果需要,可以使用构造函数参数 ),并使用每个 字符串调用其Add方法。
和
所得语言设计方法“基于模式”。我们依靠 上的用户使用他们的方法的特定名称,而 在编写时未被编译器检查。如果他们改变 在一个程序集中添加到AddPair的名称,编译器就不会抱怨 ,而是关于一个集合初始化程序 ,它坐在别的地方突然失去了调用的重载。
队列不支持Add方法,因此无法使用短表达式样式语法进行初始化。这是真正的设计选择。幸运的是,您可以将一个集合传递给Queue的构造函数。
该解决方案需要实例化中间集合。问题描述的解决方案没有。当然很明显。但是如果有人想念它,就要强调:)。 –