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>'Add'メソッドを実装していないため、初期化できるインスタンス化する必要がありIEnumerable<string>ます。

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