C#列表<>;索引超出范围
本文关键字:索引 范围 gt 列表 lt | 更新日期: 2023-09-27 17:58:56
List<String> list_sub = new List<String> ();
int i = 0;
using(SqlConnection sqlConnection = new SqlConnection(connString)) {
SqlCommand sqlCmd = new SqlCommand("SELECT SUB FROM Reque WHERE FORMAT = '" + format + "' AND CLIENTE = '" + client + "' AND CRIT = 'Cal'", sqlConnection);
sqlConnection.Open();
SqlDataReader sqlReader = sqlCmd.ExecuteReader();
while (sqlReader.Read()) {
list_sub[i] = sqlReader["SUB"].ToString();
i = i + 1; //Count
}
sqlReader.Close();
sqlConnection.Close();
}
此代码引发错误:
索引超出范围。必须是非负的并且小于收藏。
我用一个数组:
string[] list_sub = new string[20];
并且工作得很好,但没有列表(我读到列表更擅长这项任务…(
我认为列表的工作原理与数组几乎相同,我缺少什么?
更新:
在用SQL数据填充listrongub之后,我想更改一些文本框的文本(这就是为什么我需要I,我需要知道导入了多少值(
这是代码(用listrongub数据填充txtbox(:
int y = 0;
var textsarray = new TextBox[] {
txt_sub1, txt_sub2, txt_sub3, txt_sub4, txt_sub5, txt_sub6, txt_sub7,
txt_sub8, txt_sub9, txt_sub10, txt_sub11, txt_sub12, txt_sub13, txt_sub14, txt_sub15,
txt_sub16, txt_sub17, txt_sub18, txt_sub19, txt_sub20
};
foreach(TextBox txt in textsarray) {
txt.Text = list_sub[y];
y = y + 1;
}
您的问题在这里:
list_sub[i] = sqlReader["SUB"].ToString();
您将List<t>
视为一个预先确定大小的数组。您只需要这样做就可以将项目添加到数组中:
list_sub.Add(sqlReader["SUB"].ToString());
此外,看起来您甚至不再需要索引变量i
,除非您省略了一些代码。