К сожалению, вы не можете прямо использовать обычный старый объект .NET Queue
.Очередь создана для «слепой» логики «первым пришел-первым вышел», так что вы не можете выполнять ничего, кроме этого.
Если вам действительно нужно реализовать очередь, в которой вы можете найти элементы и получить их положение(очень полезная вещь) попробуйте обернуть все в классе, который предоставляет следующие методы:
public class CustomQueue<T> {
private LinkedList<T> fifoList = new LinkedList<T>();
public Enqueue(T newItem) {
//add newItem at the head of fifoList
}
public T Dequeue() {
//return and remove the item that is located at the tail of the queue
}
public int indexOf(T searchFor) {
int ret = 0;
for (T item: fifoList) {
if (item.equals(searchFor)) return ret;
ret++;
}
}
}
Для лучшей производительности (очередь и очередь O (1), а indexOf O (n)) вы должны использоватьдвойной список