关于索引自动失效错误asp.net c#

关于索引自动失效错误asp.net c#,asp.net,Asp.net,嗨 我正在创建在线测验。为此,我正在创建由用户选择的答案数组。为此,我使用了以下代码,它给出了正确的数组,但有时会给出错误“索引超出范围” //rsel是所选答案的会话值 int rsel=Convert.ToInt32(会话[“rblsel”); //[Convert.ToInt32(会话[“计数器”]表示问题数量数组的大小 int[]ansarray=new int[Convert.ToInt32(会话[“计数器])-1]; int[]temp=(int[])会话[“arrofans”];

嗨 我正在创建在线测验。为此,我正在创建由用户选择的答案数组。为此,我使用了以下代码,它给出了正确的数组,但有时会给出错误“索引超出范围”

//rsel是所选答案的会话值
int rsel=Convert.ToInt32(会话[“rblsel”);
//[Convert.ToInt32(会话[“计数器”]表示问题数量数组的大小
int[]ansarray=new int[Convert.ToInt32(会话[“计数器])-1];
int[]temp=(int[])会话[“arrofans”];
int j,n;
if(temp==null)
n=0;
其他的
n=温度长度;
对于(j=0;j
帮我找出确切的错误。Asp.net,c#
谢谢。

 **arrofans.length >= Counter**
你为什么要把“计数器”减少一个

看起来应该是
+1
…但老实说,使用
ansarray
-的大小并使用
数组会更简单。调整大小
可以有效地扩展它:

int[] ansarray = (int[])Session["arrofans"];
Array.Resize(ref ansarray, ansarray.Length + 1);
ansarray[ansarray.Length - 1] = rsel;
Session["arrofans"] = ansarray;

这样,您甚至不需要会话的“计数器”部分。

temp.Length不应大于ansarray.Length,或者确切地说,从您的代码来看,它是ansarray.Length。Length必须是temp.Length+1或更大。为了避免出现问题,您必须将其更改为for(j=0;j @ USS701590:然后更改它,以便它能正常工作。如果这对你来说不够详细,请考虑给我们更详细的不工作的方式。
int[] ansarray = new int[Convert.ToInt32(Session["Counter"]) - 1];
int[] ansarray = (int[])Session["arrofans"];
Array.Resize(ref ansarray, ansarray.Length + 1);
ansarray[ansarray.Length - 1] = rsel;
Session["arrofans"] = ansarray;