隊列添加對象後,全部都變成相同的(bug)

代碼背景:函數

定義全局變量 private object currentObj=new object();this

for(i=0;i<objectList.count;i++)
{
    currentObj=objectList[i];
    Queue.Enqueue(currentObj)
}

costomer()==>>object obj=Queue.Dequeue();
這時候發現obj都變成了最後一個對象;spa

分析:其實每一個對象是引用地址,當每次進行currentObj=objectList[i];時,都將這個currentObj地址中的內容改變,而在隊列中的每一個成員都是currentObj所指向的地址,因此都是同樣的。code

解決方法:對象

1)object對象的構造函數進行重寫,重寫一個帶參的構造函數(以下),而後currentObj=objectList[i];改成currentObj=new object(objectList[i]);blog

object(object obj)
{
    this.x=obj.x;
    this.y=obj.y;
}

2) 中間臨時變量接一下,再進行入隊列,其實原理是同樣的就是將一個新地址加入隊列,這樣就不會再同樣了!隊列

相關文章
相關標籤/搜索