5

有可能在 C# 中做到这一点吗?

Queue<string> helperStrings = {"right", "left", "up", "down"};

还是我必须先为此生成一个数组?

4

3 回答 3

17

不,您不能以这种方式初始化队列。

无论如何,您可以执行以下操作:

var q = new Queue<string>( new[]{ "A", "B", "C" });

显然,这意味着通过一个数组。

于 2010-10-26T15:20:17.400 回答
12

有可能在 C# 中做到这一点吗?

抱歉不行。

C# 中集合初始值设定项的规则是对象必须 (1) 实现 IEnumerable,并且 (2) 具有 Add 方法。集合初始化器

new C(q) { r, s, t }

被改写为

temp = new C(q);
temp.Add(r);
temp.Add(s);
temp.Add(t);

然后导致温度中的任何内容。

Queue<T>实现 IEnumerable 但它没有 Add 方法;它有一个 Enqueue 方法。

于 2010-10-26T15:25:25.090 回答
3

由于Queue<T>没有实现“添加”方法,因此您需要实例化一个IEnumerable<string>可以从中初始化的方法:

Queue<string> helperStrings 
    = new Queue<string>(new List<string>() { "right", "left", "up", "down" });
于 2010-10-26T15:22:40.943 回答