永发信息网

为什么我的对象集合中每次添加的都是同一个对象?

答案:2  悬赏:70  手机版
解决时间 2021-03-18 18:29
  • 提问者网友:难遇难求
  • 2021-03-18 11:26
我的代码如下:
e7560.Shopping.Model.PostedTypeModel post = new PostedTypeModel();
if( this.chboxPost.Checked == true )
{

post.PostTypeID = 1;
post.Charge = double.Parse( this.txtPostPay.Text);
post.AddedCharge = double.Parse( this.txtPostAdd.Text);
this.titem.Add( post );
}
if( this.chboxSend.Checked == true)
{

post .PostTypeID = 2;
post .Charge = double.Parse( this.txtSendPay.Text );
post .AddedCharge = double.Parse( this.txtSendAdd.Text);
this.titem.Add( post );
}
if( this.chboxEMS.Checked == true )
{
post .PostTypeID = 3;
post .Charge = double.Parse( this.txtEMSPay.Text );
post .AddedCharge = double.Parse( this.txtEMSAdd.Text);
this.titem.Add( post );
}
可是每次得到的三个对象都是一样的!全都是第三次添加的对象,为什么?集合不是应该每次添加一个吗?
最佳答案
  • 五星知识达人网友:我住北渡口
  • 2021-01-06 23:43
汗,你的post根本就没重新实例化,总是同一个对象改变再存进去

而集合里存的是对象的引用,你3个都是同一对象当然引用也是同一个,所以3个就会一样, 改的话在没个if里面 将 post重新指向一个新对象,如

if( this.chboxEMS.Checked == true )
{
post = new 对象();//这里实例化
post .PostTypeID = 3;
post .Charge = double.Parse( this.txtEMSPay.Text );
post .AddedCharge = double.Parse( this.txtEMSAdd.Text);
this.titem.Add( post );
}
全部回答
  • 1楼网友:轻雾山林
  • 2019-07-19 20:43
这是因为你没有重写setclass的equals和hashcode方法. 没有重写的时候,对象比较调用的是object的equals方法,此时你new的每个人都是不同对象,及时名字和长度都一样,也不认为是一个对象. eclipse为例,可以在文件上右键,自动生成这两个方法,生成的时候选择你需要判断equals的属性即可
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯