foreach中的InvalidOperationException

时间:2015-12-02 00:55:04

标签: c# foreach

这是我的代码:

<xf:delete
    ref="
        instance('other')/Item[
            Id = instance('main')/Item/Id
        ]"
/>

我在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; } 循环中遇到InvalidOperationException,说“集合已被修改,枚举操作可能无法执行”。 现在,我不相信我正在修改这个系列,那有什么不对?

1 个答案:

答案 0 :(得分:1)

  

我不相信我正在修改集合

您是,List<T>是引用类型,listaUnidadeslista都指向同一个实例,因此在listaUnidades[t] =您修改同一个集合你正在迭代。

listaUnidades成为新List<int>并致电Add()而不是使用索引器。