2010-08-11 22 views

cevap

39

Queue bir ICollection alır bir kurucu sahiptir. Aynı elemanlar ile başlatmak için sıraya listenizi geçirebilirsiniz:

var queue = new Queue<T>(list); // where 'T' is the lists data type. 
+0

jenerik sıra yok mu? – zerkms

+0

İyi yakalama. Aslında jenerik olmayan bir Kuyruk var, ancak genel sürümü isteyebilirsiniz. Cevabımı güncelledim. –

+0

@zerkms: "System.Collections" ad alanında jenerik olmayan bir 'Queue 'sınıfı var: http://msdn.microsoft.com/en-us/library/system.collections.queue.aspx – Rich

3
var q = new Queue<Object>(); 
for(int i = 0; i < list.Count; i++) q.Enqueue(list[i]); 

ilk madde listesi olmalıdır sırasından dequeued anlamına gelir [0].

tam tersi anlamına gelir, sadece ters döngü kullanımı: for(int i = list.Count-1; i >= 0; i--)

0
var mylist = new List<int> {1,2,3}; 
var q = new Queue<int>(mylist); 
4

sen ne demek istiyorsunuz "aynı sırada?"

Bunu yaparsanız bu:

var queue = new Queue<object>(list); 

Sonra kuyruk Dequeue bir çağrı daha önce list[0] de ikamet etmişti elemanı döneceğini demektir listede, aynı sırada üzerinde numaralandırılan.

Bunu yaparsanız bu:

var queue = new Queue<object>(list.AsEnumerable().Reverse()); 

Sonra kuyruk Dequeue bir çağrı daha önce list[list.Count - 1] de ikamet etmişti elemanı döneceğini demektir listeye gibi ters sırayla üzerinde numaralandırılan.

+0

+1. –