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

时间:2011-09-27 15:32:11

标签: c#-4.0

此:

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'

这让我想知道为什么编译器足够愚蠢地要求添加。

那么,应该如何在队列/堆栈构造函数中进行初始化?

2 个答案:

答案 0 :(得分:11)

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

相反,您可以调用带有Stack的{​​{1}}或Queue构造函数:

IEnumerable<T>

答案 1 :(得分:0)

在C#6.0中,您可以执行以下操作:

var stack = new Stack<string> () {"a","b"};

具有以下扩展方法

public static class Util
{
    public static void Add<T>(this Stack<T> me, T value)
    {
        me.Push(value);
    }
}

enter image description here