代碼背景:函數
定義全局變量 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) 中間臨時變量接一下,再進行入隊列,其實原理是同樣的就是將一個新地址加入隊列,這樣就不會再同樣了!隊列