2012-06-21 70 views
1

我正在Silverlight 3.0中創建一個應用程序在那個應用程序中,我想實現一個功能,例如:我必須保持值的集合。我一直在從一端添加值並從另一端刪除值。意味着我想保持3000個值的集合。如果我在該集合中添加一個值,則應刪除一個值,以便我只收集3000個值。我想使用「循環隊列」那麼在循環隊列的silverlight中是否有任何功能?或者是否有任何有效的邏輯而不是循環隊列?請幫助我。提前感謝。Silverlight中的循環隊列功能

回答

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); 
    } 
} 
+0

感謝您的答覆...! – Dany

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; 
     } 
    } 
} 

有點粗糙,但應滿足您的需求。

+0

感謝答覆 – Dany