永发信息网

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

答案:2  悬赏:70  手机版
解决时间 2021-03-18 18:29
我的代码如下:
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 );
}
可是每次得到的三个对象都是一样的!全都是第三次添加的对象,为什么?集合不是应该每次添加一个吗?
最佳答案
汗,你的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 );
}
全部回答
这是因为你没有重写setclass的equals和hashcode方法. 没有重写的时候,对象比较调用的是object的equals方法,此时你new的每个人都是不同对象,及时名字和长度都一样,也不认为是一个对象. eclipse为例,可以在文件上右键,自动生成这两个方法,生成的时候选择你需要判断equals的属性即可
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
何炅演的那部电影最搞笑
帮忙写一份诉讼请求
幻速S6能用遥控钥匙来降车窗吗
深圳哪里可以考育婴师证
东鹏瓷砖生活体验馆地址在什么地方,想过去办
歌曲就叫百花缭乱它的歌词中文是什么
用了致紧女王真的会有效果吗?
手机QQ密码有十七位数按不了那么多密码上去怎
bat 中调用外部程序后如何让 bat继续执行
悠扬的琴声从窗口传出来的比喻句是什么
学校应把智育放在首位 努力提高 对吗
求几本邪恶点的小说
违法停车自动抓拍 还有违法停车智能抓拍与违
拨打96688查询银行卡的余额安全吗用这方式查
沈阳亮衡天平仪器有限公司地址有知道的么?有
推荐资讯
Daisy London饰品现在主推系列是什么?
雍 宝 通 正 背面左右各是一个繁体字 请问知
"永不放弃追求成功的梦想"德语翻译
黑暗之魂 传火祭祀场 罗根的学生在哪里
“我们一直是朋友”,请翻译成英语
芒果tv的PC版本每次都是默认高清,想看超清要
冒险岛现在组队经验怎么分配的?
金仕堡健身苏州太仓会所这个地址在什么地方,
从前往后数我是第6个从后往前数我是第五个,一
西游记陈浩民版车迟国斗法是几集
到女孩家玩找个什么理由跟她爸妈说呢
利用下列可逆反应可以将粗镍转化为纯度99.9%
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?