这个:
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方法,则无法使用它.
相反,你可以拨打Stack或Queue接受一个构造函数IEnumerable<T>:
var stack = new Stack<int>(new [] { 1, 2, 3 });
Run Code Online (Sandbox Code Playgroud)