在下面的代码中,我有一个方法,它在执行
时抛出错误“无法将类型'对象'隐式转换为 '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());
}
答案 0 :(得分:1)
在您获得价值形式会话的地方更改您的代码
nArr=(ArrayList)Session["CHECKED_ITEMS"];
答案 1 :(得分:0)
array accessor from Session
会返回object
,而不是ArrayList
,所以你必须投出它:
nArr = (ArrayList)Session["CHECKED_ITEMS"];
或者(如果变量不是nArr
,则此null
ArrayList
:
nArr = Session["CHECKED_ITEMS"] as ArrayList;
我强烈建议使用通用的List<T>
类,因为它是键入的更安全。
答案 2 :(得分:0)
错误表示您需要再次将会话转换为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());
}