我正在 Silverlight 3.0 中制作应用程序 在该应用程序中,我想实现如下功能:我必须维护值的集合。我不断地从一端添加该集合中的值并从另一端删除值。意味着假设我想维护一个包含 3000 个值的集合。如果我在该集合中添加一个值,则应删除一个值,以便我只有 3000 个值的集合。我想使用“循环队列” 那么循环队列的 Silverlight 中是否有任何功能?还是有任何有效的逻辑来代替循环队列?请帮助我。在此先感谢。
问问题
538 次
2 回答
1
我不熟悉任何特定术语“循环队列”,但您可以轻松创建自己的:
public class CircularQuene<T> : List<T>
{
public CircularQuene(int maxCount)
{
count = maxCount;
}
new public void Add(T variable)
{
base.Add(variable);
if (Count > count)
{
RemoveAt(0);
}
}
private int count;
public int MaxCount
{
get
{
return count;
}
set
{
count = value;
}
}
}
有点粗糙,但应该适合您的需求。
于 2012-06-21T14:25:31.040 回答
1
您可能想使用内置类并围绕它Queue
实现一个包装器:
public class CircularQueue
{
private int totalItems;
private Queue<object> queue = new Queue<object>();
public CircularQueue(int maxCount)
{
this.totalItems = maxCount;
}
/// <summary>
/// Get first object from queue.
/// </summary>
public object Dequeue()
{
// ToDo: You might want to check first if the queue is empty to avoid a InvalidOperationException
object firstObject = this.queue.Dequeue();
return firstObject;
}
public void EnQueue(object objectToPutIntoQueue)
{
if (this.queue.Count >= this.totalItems)
{
object unusedObject = this.queue.Dequeue();
// ToDo: Cleanup the instance of ununsedObject.
}
this.queue.Enqueue(objectToPutIntoQueue);
}
}
于 2012-06-21T14:32:24.890 回答