protected void Button2_Click(object sender, EventArgs e)
{
int[] L = { 1, 2, 3, 4, 5 };
ViewState["I"] = L.ToArray();
}
protected void Button1_Click(object sender, EventArgs e)
{
int[] I = { };
if (ViewState["I"] != null)
I = (int[])ViewState["I"];
for (int i = 0; i < I.Length; i++)
Response.Write(I[i].ToString());
}
运行程序时,会发生错误:
无法投射类型的对象 'System.Collections.Generic.List`1 [System.Int32]' 输入'System.Int32 []'。
为什么会出现此错误?
答案 0 :(得分:4)
ToArray()方法创建一个IEnumerable集合,即List。那不是int []。
我还建议删除“ToArray()”扩展方法
答案 1 :(得分:1)
删除.ToArray()调用。 L已经是一个int数组(int []是一个数组构造函数)。您收到错误的原因是因为您在将其存储为IList时尝试将其强制转换为int数组。
所以重申一下,就是不要打电话.ToArray,你应该很好!