如何为Stack或Queue指定文字初始化程序?

Chr*_*sJJ 7 c#-4.0

这个:

List<string> set = new List<string>() { "a","b" };
Run Code Online (Sandbox Code Playgroud)

工作正常,但是:

Stack<string> set = new Stack<string>() { "a","b" };
Queue<string> set = new Queue<string>() { "a","b" };
Run Code Online (Sandbox Code Playgroud)

失败了:

...does not contain a definition for 'Add'
Run Code Online (Sandbox Code Playgroud)

这让我想知道为什么编译器愚蠢到要求Add.

那么,如何逐个队列/堆栈初始化构造函数?

SLa*_*aks 11

集合初始值设定项是一种编译器功能,可以为Add您传递的每个项调用该方法.如果没有Add方法,则无法使用它.

相反,你可以拨打StackQueue接受一个构造函数IEnumerable<T>:

var stack = new Stack<int>(new [] { 1, 2, 3 });
Run Code Online (Sandbox Code Playgroud)