中易网

c# 的ArrayList add的数据都一样?怎么回事

答案:2  悬赏:70  
解决时间 2021-03-08 20:35
ArrayList zhlist = new ArrayList(12);
string[] zhanghao = new string[2];
.
.
.
while (reader.Read())
{
zhanghao[0] = reader[1].ToString();
zhanghao[1] = reader[2].ToString();
label.Text+=reader[1].ToString();
zhlist.Add(zhanghao);
}
这样子添加后数组里的数据都是一样的,全部显示最后添加的那一个!可以确定添加的是不同数据。
要怎么改,高手帮忙看一下,谢谢!
最佳答案
可看出你面向对象的基础知识不扎实,还没有引用类型与值类型的概念认知。你定义了一个string数组,它是引用类型,所有对它的引用都是调用堆上实际数据的地址,所以你在while里操作的永远都是同一个对象,自然数据都是一样的。把代码改成下面再试试:
while (reader.Read())
{
string[] zhanghao = new string[2];
zhanghao[0] = reader[1].ToString();
zhanghao[1] = reader[2].ToString();
label.Text+=reader[1].ToString();
zhlist.Add(zhanghao);
}
全部回答
你的问题不在于arraylist,而在于下面4句程序中. string[] fieldlinestr = fieldline.split("="); hashmap map = new hashmap(); map.put("name", fieldlinestr[0].touppercase()); map.put("value", fieldlinestr[1]); 当 fieldline不是这种形式的时候: name=value(也就是没有等号的时候), 以上代码就会抛出异常,因为split()后得到的 fieldlinestr 的长度只有1, 那么你调用map.put("value", fieldlinestr[1]); 就会出arrayindexoutofboundsexception: 1 这种异常 简单的办法是在hashmap map = new hashmap();上面加入一个fieldlinestr数组长度的判断. 另外,站长团上有产品团购,便宜有保证
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
华为T8300为什么不能用蓝牙传音乐 总是显示配
红运宾馆在什么地方啊,我要过去处理事情
紫色杆上长紫叶,紫色叶中开紫花,紫色花上结
无线路由器的好坏会影响到连接在它上面的有线
电脑关机时出现该图片
梦见自己和邻居帮他家挖坟墓建房子是怎么回事
梅顺商行地址在哪,我要去那里办事
哈尔滨市好的艺术学校有么?推荐一下,都有什
怎样将某个网页设置为任务栏中的IE快速启动栏
有没有那位大神知道,苹果手机能不能装 2个微
盛方包装在哪里啊,我有事要去这个地方
急!!!请问现在还有白喉这种病出现吗|
win7前面的插孔没声音怎么设置
橘子汽水是一种饮料吗?如果是,有哪些常见品
友华糕饼店地址在什么地方,想过去办事
推荐资讯
自已付30万拿一本未更名的房产证有何风险
鸡珍吃了对身体有什么好处?
QQ三国徒弟在师傅经验会加成吗
课堂顶撞了老师准备在课上道歉和同学也道歉,
山西华元医药集团有限公司(北门)怎么去啊,有
神武神兽5力加点好吗
董各庄村(104乡道)在哪里啊,我有事要去这个
长城C30腾翼怠速不稳,偶尔发动机抖动
神笔广告印刷地址有知道的么?有点事想过去
+1(424)225-382424是什么号
学数学的学生觉得统计学科不够严谨,是一种经
食品从业人员个人卫生要做到的“四勤”包括哪
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?