C# 使用默认值初始化队列或堆栈?

C# 使用默认值初始化队列或堆栈?,c#,stack,queue,C#,Stack,Queue,可以使用预先放置的值初始化列表: List L1=新列表{1,2,3} 对于队列,是否有上述的等效项?我的想法是: Queue Q1=新队列{1,2,3} 这不管用。有什么解决办法吗 是 Queue Q1=新队列(); Q1.排队(1); Q1.排队(2); Q1.排队(3); 唯一有效的解决方案是使用构造函数 Queue Q1=新队列(新[]{1,2,3}); 或 List List=新列表{1,2,3}; 队列Q1=新队列(列表); 试试这个 Queue<int> Q1 =

可以使用预先放置的值初始化列表:

List L1=新列表{1,2,3}

对于队列,是否有上述的等效项?我的想法是:

Queue Q1=新队列{1,2,3}

这不管用。有什么解决办法吗

Queue Q1=新队列();
Q1.排队(1);
Q1.排队(2);
Q1.排队(3);
唯一有效的解决方案是使用构造函数

Queue Q1=新队列(新[]{1,2,3});

List List=新列表{1,2,3};
队列Q1=新队列(列表);
试试这个

Queue<int> Q1 = new Queue<int>(new int[] { 1, 2, 3} );
Queue Q1=新队列(新int[]{1,2,3});
请参见:特别是:

这个新语法的意义只是创建一个 MyNames使用其无参数构造函数(构造函数参数可以是 并使用每个 字符串

由此产生的语言设计是一种“基于模式”的方法。我们依靠 在用户使用其方法的特定名称时 编译器在编写时没有检查它。如果他们去换衣服 在一个程序集中添加到AddPair的名称,编译器不会 抱怨这一点,而是抱怨集合初始值设定项 坐在别的地方突然错过了一个超负荷呼叫


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

此解决方案需要实例化中间集合。上述解决方案并不适用。当然很明显。但如果有人没注意到,请在下面划线:)。
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} );