不能隐式地将类型“对象”转换为system.collection.arraylist
本文关键字:转换 system arraylist collection 对象 类型 不能 | 更新日期: 2023-09-27 18:34:00
在下面的代码中,我有一个在执行时抛出错误的方法
" 无法将类型'对象'隐式转换为 'System.Collections.ArrayList'"
请帮我做到这一点。
private string strGetIndentString()
{
ArrayList nArr = new ArrayList();
System.Text.StringBuilder strInfo = new System.Text.StringBuilder();
if (Session["CHECKED_ITEMS"] != null)
nArr = Session["CHECKED_ITEMS"];//throws error
for (int i = 0; i < nArr.Count; i++)
strInfo.Append(nArr[i].ToString() + ",");
return strInfo.ToString().TrimEnd(",".ToCharArray());
}
像这样更改代码,在获取值表单会话的位置
nArr=(ArrayList)Session["CHECKED_ITEMS"];
来自 Session
的数组访问器返回一个 object
,而不是一个ArrayList
,所以你必须强制转换它:
nArr = (ArrayList)Session["CHECKED_ITEMS"];
或者(如果变量不是ArrayList
,则nArr
null
nArr = Session["CHECKED_ITEMS"] as ArrayList;
我强烈建议使用泛型List<T>
类,因为它是类型化的,所以更安全。
正如错误所说,您需要再次将会话转换为ArrayList
private string strGetIndentString()
{
ArrayList nArr = new ArrayList();
System.Text.StringBuilder strInfo = new System.Text.StringBuilder();
if (Session["CHECKED_ITEMS"] != null)
nArr =(ArrayList) Session["CHECKED_ITEMS"];//throws error
for (int i = 0; i < nArr.Count; i++)
strInfo.Append(nArr[i].ToString() + ",");
return strInfo.ToString().TrimEnd(",".ToCharArray());
}