Taille limite de Queue<T> dans .NET ?

J'ai une file d'attente

请先 登录 后评论

3 réponses

CodingWithoutComments

Pourquoi n'utiliseriez-vous pas simplement un tableau de taille 2 ? Une file d'attente est censée pouvoir croître et rétrécir de manière dynamique.

Ou créez une classe wrapper autour d'une instance de Queue<T> instance et chaque fois que l'on met en file d'attente un objet <T>, vérifiez la taille de la file d'attente. Si supérieur à 2, retirez le premier élément de la file d'attente.

请先 登录 后评论
Lasse Vågsæther Karlsen

Vous devriez créer votre propre classe, un ringbuffer répondrait probablement à vos besoins.

Les structures de données dans .NET qui vous permettent de spécifier la capacité, à l'exception du tableau, l'utilisent pour créer la structure de données interne utilisée pour contenir les données internes.

Par exemple, pour une liste, la capacité est utilisée pour dimensionner un tableau interne. Lorsque vous commencez à ajouter des éléments à la liste, il commence à remplir ce tableau à partir de l'index 0 et plus, et lorsqu'il atteint votre capacité, il augmente la capacité à une nouvelle capacité supérieure et continue de le remplir.

请先 登录 后评论
tags2k

J'ai mis au point une version de base de ce que je recherche, ce n'est pas parfait mais ça fera l'affaire jusqu'à ce que quelque chose de mieux arrive.

public class LimitedQueue<T> : Queue<T>
{
    public int Limit { get; set; }

    public LimitedQueue(int limit) : base(limit)
    {
        Limit = limit;
    }

    public new void Enqueue(T item)
    {
        while (Count >= Limit)
        {
            Dequeue();
        }
        base.Enqueue(item);
    }
}
请先 登录 后评论