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);
}
这样子添加后数组里的数据都是一样的,全部显示最后添加的那一个!可以确定添加的是不同数据。
要怎么改,高手帮忙看一下,谢谢!
c# 的ArrayList add的数据都一样?怎么回事
答案:2 悬赏:70
解决时间 2021-03-08 20:35
- 提问者网友:饮鸿
- 2021-03-08 12:34
最佳答案
- 二级知识专家网友:哭不代表软弱
- 2021-03-08 12:45
可看出你面向对象的基础知识不扎实,还没有引用类型与值类型的概念认知。你定义了一个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);
}
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);
}
全部回答
- 1楼网友:伤口狠精致
- 2021-03-08 13:50
你的问题不在于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数组长度的判断.
另外,站长团上有产品团购,便宜有保证
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯