• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
一只蜗牛
有一种爱挂着泪珠,但很凄美,它叫放弃!放弃虽然痛苦,但也是一种幸福的拥有,感情是不能勉强的,如果死死抓住, 抓住的也是伤痕和痛苦.把手握紧,里面什么也没有,把手松开就拥有了一切。
博客园    首页    新随笔    联系   管理    订阅  订阅
队列添加对象后,所有都变成相同的(bug)

代码背景:

定义全局变量 private object currentObj=new object();

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

costomer()==>>object obj=Queue.Dequeue();
这时候发现obj都变成了最后一个对象;

分析:其实每个对象是引用地址,当每次进行currentObj=objectList[i];时,都将这个currentObj地址中的内容改变,而在队列中的每个成员都是currentObj所指向的地址,所以都是一样的。

解决方法:

1)object对象的构造函数进行重写,重写一个带参的构造函数(如下),然后currentObj=objectList[i];改为currentObj=new object(objectList[i]);

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

2) 中间临时变量接一下,再进行入队列,其实原理是一样的就是将一个新地址加入队列,这样就不会再一样了!

一个不努力的人在努力做到努力
posted on 2018-12-25 16:27  XuPeppy  阅读(328)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3