arraylist寻址

Posted on 2013-06-19 09:37  KathyStone  阅读(334)  评论(0)    收藏  举报

首先感谢小不点儿同学提供的思路。

问题背景:把manage.aspx中的gridview列出的所有ID值传入下一个页面(放入arraylist,并通过session传递arraylist)。

点击ID=1的条目进入下一个页面Edit.aspx,点击该页的“下一条”时没有反应。程序在这里设断点。

CODE:

///获取数据库连接字符串。。。

int myID=Convert.ToInt16(request.querystring["ID"]);

...

ArrayList myArr=new ArrayList();

myArr=(ArrayList)Session["arr"];

int index=myArr.IndexOf(myID);

-----------------------------------------------------------

程序运行到这里,myID有值为1,myArr有值为1,2,3...但是IndexOf返回的值一直是-1。

出现问题的原因:

进入IndexOf的元数据定义,IndexOf(object value)。再进入object的元数据定义,可以看到其中int型数据是

public virtual int GetHashCode()

返回int的哈希代码。但是在我的数据库中,ID值是bigint类型的,即int64。int64和int的哈希类型是不同的,因此在IndexOf时,arraylist无法找到其中的int类型ID。

解决方法:将myID的类型定义为Int64即可。

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3