Ограничить размер очереди <T> в .NET?
Я бы порекомендовал вам открыть collections C5 Library. В отличие от SCG (System.Collections.Generic), C5 dotnet запрограммирован на интерфейс dotnet и предназначен для создания .net-framework подклассов. Большинство общедоступных java-collections-api методов являются виртуальными, и collection ни один из классов не запечатан. Таким collections образом, вам не придется collection использовать это неприятное dotnet "новое" ключевое collection слово, которое не сработает, если .net-framework ваш LimitedQueue
будет преобразован в dot-net SCG.Queue
. При использовании C5 и dotnet использовании того же кода, что collection и раньше, вы должны унаследовать java-collections-api от CircularQueue
. CircularQueue
фактически реализует collection как стек, так и очередь, поэтому collections вы можете получить оба варианта .net-framework с ограничением почти бесплатно. Я dot-net переписал его ниже с помощью collection некоторых конструкций 3.5:
using C5;
public class LimitedQueue : CircularQueue
{
public int Limit { get; set; }
public LimitedQueue(int limit) : base(limit)
{
this.Limit = limit;
}
public override void Push(T item)
{
CheckLimit(false);
base.Push(item);
}
public override void Enqueue(T item)
{
CheckLimit(true);
base.Enqueue(item);
}
protected virtual void CheckLimit(bool enqueue)
{
while (this.Count >= this.Limit)
{
if (enqueue)
{
this.Dequeue();
}
else
{
this.Pop();
}
}
}
}
Я dotnet думаю, что этот код должен .net делать именно то, что вы .net-framework искали.
.net
collections
queue
Ограничить размер очереди <T> в .NET?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.