此问题已经在这里有了答案:
我正在尝试保存一个遍历10列的列表,并且我的代码引发了System.IndexOutOfRangeException
for (int i = 1; i <= 9; i++)
{
txtIndicator = (TextBox)this.UpdatePanel1.FindControl("txtIndicator" + i);
if (manipType.Equals("add"))
{
try
{
Databases.WeeklySurveillance iws = new Databases.WeeklySurveillance()
{
WeekEnding = DateTime.Parse(tmpMondayDate),
FacilityCode = Session["facility"].ToString().Split(":".ToCharArray())[0],
AgeGroup = iwsDataItems[i - 1].AgeGroup,
Condition = iwsDataItems[i - 1].Condition,
Position = i,
Batch = 2019,
Total = int.Parse(txtIndicator.Text),
Description = Session["facility"].ToString().Split(":".ToCharArray())[1].Trim(),
DateStamp = DateTime.Now
};
healthDC.WeeklySurveillances.Add(iws);
}
}
}
您能否更新您的问题以包括引发的异常中包含的确切索引?
快速查看您的代码,我可以发现您应该使用:
for (int i = 0; i < 9; i++)
{
}
在循环中,也最好的做法是根据集合大小设置最大值。这样,您可以保证循环只会迭代可用的内容,而不是硬编码。