c# - 索引超出了数组错误的范围?
问题描述
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();
}
解决方案
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()
。
推荐阅读
- c++ - 在面中插入边 - CGAL 错误:断言违规
- elixir - Ecto - 递归计算嵌套关联
- active-directory - 如何从导入组中排除 AD OU
- java - 限制生成的 SWT 对象的数量后不再有句柄
- java - 尝试将 Arrayadapter 变成 Int Array 的问题
- django - Django 如何在内置的 EditProfileForm 上呈现用户值
- java - 有没有办法可以匹配这个 ArrayList 以便 burger1 到位 1?
- android - 框架仅在 Android 上覆盖 Label TextColor (xamarin-forms)
- java - Visual Studio Code 中的 Java 测试运行程序
- javafx - 在 GridPane 中动态调整按钮的大小和重新定位