如何为堆栈或队列指定文字初始化程序?
这个:
List<string> set = new List<string>() { "a","b" };
工作正常,但是:
Stack<string> set = new Stack<string>() { "a","b" };
Queue<string> set = new Queue<string>() { "a","b" };
失败了:
...does not contain a definition for 'Add'
这确实让我想知道为什么编译器愚蠢到要求添加。
那么,应该如何在队列/堆栈构造函数中进行初始化?
This:
List<string> set = new List<string>() { "a","b" };
works fine, but:
Stack<string> set = new Stack<string>() { "a","b" };
Queue<string> set = new Queue<string>() { "a","b" };
fails with:
...does not contain a definition for 'Add'
which does make me wonder why the compiler was dumb enough to ask for Add.
So, how should one initialise at a Queue/Stack constructor?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
集合初始值设定项是一项编译器功能,它会对您传递的每个项目调用
Add
方法。如果没有
Add
方法,则无法使用它。相反,您可以调用采用
IEnumerable
的Stack
或Queue
构造函数:Collection initializers are a compiler feature that call the
Add
method with each item you pass.If there is no
Add
method, you can't use it.Instead, you can call the
Stack
orQueue
constructor that takes anIEnumerable<T>
:在 C# 6.0 中,您可以执行以下操作:
使用以下扩展方法
in C# 6.0, you can do this:
with below extension method