.NET 4.0 introduce una classe SortedSet<T>
, insieme all'interfaccia ISet<T>
implementata da SortedSet<T>
e HashSet<T>
. Questo renderà ovviamente più semplice implementare la tua classe PriorityQueue<T>
.
Tuttavia, non esiste ancora un'interfaccia IQueue<T>
, che ammetterebbe almeno la necessità di code di priorità o qualsiasi altra implementazione rispetto al BCL base Queue<T>
. Allo stesso modo, non c'è IStack<T>
.
Personalmente trovo questa mancanza di alcune di queste interfacce di base deludenti e miopi, soprattutto perché il costo di progettazione/specifica/implementazione/test/documentazione di estrarre un'interfaccia semplice da una classe esistente dovrebbe essere davvero molto basso.
public interface IQueue<T> : IEnumerable<T>, ICollection, IEnumerable
{
T Dequeue();
void Enqueue(T item);
T Peek();
}
Lì, vedere? L'ho fatto.
fonte
2009-12-14 10:29:25
Una delle prime cose che ho notato passando da Java a C#. Nessuna coda prioritaria? Java aveva anche/ha sincronizzato le code di priorità. – Carra
vedere anche http://stackoverflow.com/questions/102398/priority-queue-in-net –