Возможно ли это сделать в C #?
Queue<string> helperStrings = {"right", "left", "up", "down"};
или для этого нужно сначала создать массив?
Нет, вы не можете инициализировать очередь таким образом.
В любом случае, вы можете сделать что-то вроде этого:
var q = new Queue<string>( new[]{ "A", "B", "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);
, а затем приводит к тому, что находится в temp.
Queue<T> реализует IEnumerable, но не имеетДобавить метод;у него есть метод Enqueue.
Queue<T>
Поскольку Queue<T> не реализует метод 'Добавить', вам необходимо создать экземпляр IEnumerable<string>, из которого он может быть инициализирован:
IEnumerable<string>
Queue<string> helperStrings = new Queue<string>(new List<string>() { "right", "left", "up", "down" });