InvalidOperationException in a foreach
本文关键字:foreach in InvalidOperationException | 更新日期: 2023-09-27 18:25:19
这是我的代码:
public static int getUnidades(List<int> lista)
{
string conString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
SqlConnection SQLCon = new SqlConnection(conString);
string SQLCom = "Select UnidadesCliente FROM Cliente WHERE @id = IdCliente";
SqlCommand cmd = new SqlCommand(SQLCom, SQLCon);
List<int> listaUnidades = lista;
int t = 0;
foreach(int i in lista)
{
cmd.Parameters.AddWithValue("@id", Convert.ToString(i));
SQLCon.Open();
listaUnidades[t] = Convert.ToInt32(cmd.ExecuteScalar());
SQLCon.Close();
t++;
}
int total = 0;
foreach(int i in listaUnidades)
{
total = total + i;
}
return total;
}
我在foreach(int i in lista)
循环中得到一个InvalidOperationException,说"集合已修改,枚举操作可能无法执行"。现在,我不相信我在修改集合,那么怎么了?
我不相信我在修改集合
实际上,List<T>
是一个引用类型,listaUnidades
和lista
都指向同一个实例,因此在listaUnidades[t] =
中,您正在修改迭代的同一集合。
只需将listaUnidades
设为新的List<int>
并调用Add()
,而不使用索引器。