首页 > 解决方案 > 索引超出了数组错误的范围?

问题描述

protected void Page_Load(object sender, EventArgs e)
{
    DataTable dt = new DataTable();
    dt.Columns.AddRange(new DataColumn[7] { new DataColumn("product_name"), new DataColumn("product_desc"), new DataColumn("product_price"), new DataColumn("product_qty"), new DataColumn("product_images"), new DataColumn("id"), new DataColumn("product_id") });
    if (Request.Cookies["aa"] != null)
    {
        s = Convert.ToString(Request.Cookies["aa"].Value);
        string[] strArr = s.Split('|');
        for (int i = 0; i < strArr.Length; i++)

        {
            t = Convert.ToString(strArr[i].ToString());
            string[] strArr1 = t.Split(',');
            for (int j =0; j <= strArr1.Length; j++)
            {
                a[j] = strArr1[j].ToString();
            }
            dt.Rows.Add(a[0].ToString(),a[1].ToString(),a[2].ToString(),a[3].ToString(),a[4].ToString(),i.ToString(),a[5].ToString());
        }
    }
    d1.DataSource = dt;
    d1.DataBind();
}

标签: c#

解决方案


for (int j =0; j <= strArr1.Length; j++)

最后一项超出范围;它应该是

for (int j =0; j < strArr1.Length; j++)

顺便说一句:strArr是一个string[]strArr[i]因此是一个string(或null),所以strArr[i].ToString()看起来是多余的,但Convert.ToString(strArr[i].ToString())似乎是多余的。

你可能会因此失去很多ToString()


推荐阅读