C# Урок, опашка и класове за опашка - T

C# --- C# Урок --- Опашка: Опашка и класове на опашка

Опашка (queue) е колекция, в която елементите се обработват по схемата „първи влязъл, пръв излязъл“ (първи влязъл, първи излязъл – FIFO). Първият елемент, вмъкнат в опашката, се чете първи. Примерите за опашки включват опашка за летище, опашка за кандидати за работа, опашка за печат на принтер или кръгова опашка от нишки за разпределяне на ресурси на процесора. Често има опашки, в които елементите се обработват различно според приоритета. Например на опашката на летището пътниците от бизнес класа се обслужват преди пътниците от икономична класа. Тук могат да се използват множество опашки, по една за всеки приоритет. Това се вижда ясно на летището, тъй като има две гишета за чекиране на пътници в бизнес класа и икономична класа. Същото важи за опашките за печат и мениджъра на нишки. Можете да имате масив от списък от опашки, където елементът на масива представлява приоритета. Във всеки елемент от масива ще има опашка и обработката ще се извършва на база FIFO.

Опашката се реализира с помощта на класовете Queue от пространството на имената System.Collections и Queue от пространството на имената System.Collections.Generic.

Следните конструктори са дефинирани в класа Queue:

Първата форма на конструктора създава празна опашка с капацитет по подразбиране и фактор на растеж 2.0. Във втората форма се създава празна опашка, чийто първоначален размер се определя от капацитета, зададен от параметъра за капацитет, а коефициентът на растеж по подразбиране за нея е 2.0. В третата форма е позволено да се посочи не само капацитетът (като параметър на капацитета), но и факторът на растежопашка за създаване (като параметър на growFactor между 1.0 и 10.0). И в четвъртата форма се създава опашка, състояща се от елементите на указаната колекция col. Първоначалният му капацитет е равен на броя на посочените елементи, а коефициентът на растеж по подразбиране е 2,0.

Следните конструктори са дефинирани в класа Queue:

Първата форма на конструктора създава празна опашка с първоначален капацитет по подразбиране, докато втората форма създава празна опашка, чийто начален размер се определя от параметъра за капацитет. И в третата форма се създава опашка, съдържаща елементите на колекцията, посочени от параметъра за колекция. Първоначалният му капацитет е равен на броя на посочените елементи.

Членовете на класа Queue са изброени по-долу:

Брой

Свойството Count връща броя на елементите в опашката.

Enqueue()

Методът Enqueue() добавя елемент в края на опашката.

Dequeue()

Методът Dequeue() чете и премахва елемент от главата на опашката. Ако няма повече елементи в опашката, когато се извика методът Dequeue(), се хвърля InvalidOperationException.

Peek()

Методът Peek() чете елемент от главата на опашката, но не го премахва.

TrimExcess()

Методът TrimExcess() променя капацитета на опашката. Методът Dequeue() премахва елемент от опашката, но не променя неговия капацитет. TrimExcess() ви позволява да се отървете от празни елементи в началото на опашката.