无法隐式转换类型'对象'到system.collection.arraylist

时间:2014-12-12 07:49:49

标签: c# asp.net

在下面的代码中,我有一个方法,它在执行

时抛出错误
  

“无法将类型'对象'隐式转换为   '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());            
}

3 个答案:

答案 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());

        }