Инициализация очереди или стека со значениями по умолчанию?
вы можете инициализировать список с предварительно установленных значений:
List<int> L1 = new List<int> {1, 2, 3};
есть ли эквивалент выше для очереди? Моей идеей было:--4-->
Queue<int> Q1 = new Queue<int> {1, 2, 3};
не работает. Есть ли обходной путь?
Is
Queue<int> Q1 = new Queue<int>();
Q1.Enqueue(1);
Q1.Enqueue(2);
Q1.Enqueue(3);
единственное разумное решение?
3 ответов
конструктор Queue<T> Constructor (IEnumerable<T>
)
Queue<int> Q1 = new Queue<int>(new[] { 1, 2, 3 });
или
List<int> list = new List<int>{1, 2, 3 };
Queue<int> Q1 = new Queue<int>(list);
см.:http://blogs.msdn.com/b/madst/archive/2006/10/10/what-is-a-collection_3f00_.aspx и особенно:
значение этого нового синтаксиса-просто создать экземпляр MyNames, используя его конструктор no-arg (аргументы конструктора могут быть при необходимости) и вызовите его метод Add с каждым из веревка.
и
результирующий дизайн языка-это подход, основанный на шаблоне. Мы полагаемся о пользователях, использующих определенное имя для своих методов таким образом, что не проверено компилятором, когда они его пишут. Если они пойдут и изменятся ... имя Add to AddPair в одной сборке компилятор не будет пожаловаться на это, но вместо этого об инициализаторе коллекции сидя где-то в другом месте, вдруг не хватает перегрузки, чтобы позвонить.
очередь не поддерживает метод Add и, следовательно, не может быть инициализирована синтаксисом стиля короткого выражения. Это действительно выбор по дизайну. К счастью, вы можете передать коллекцию конструктору очереди.