遍历数组时,在C#中索引超出范围异常

遍历数组时,在C#中索引超出范围异常,c#,indexing,range,out,C#,Indexing,Range,Out,我用这段代码创建了一个程序,它接受一个范围并将素数输出到控制台。我有一个问题,我试图遍历我构建的数组,因此循环应该只向控制台写入使用我的方法的返回值为prime的值。我遇到的问题是,我将第二个条件设置为numaray.Length,但它似乎给了我索引超出范围异常。我只希望循环遍历numArray中的所有值,并在确定最后一个值是否为素数时停止 public struct Prime { public int x; // constructor for Prime pub

我用这段代码创建了一个程序,它接受一个范围并将素数输出到控制台。我有一个问题,我试图遍历我构建的数组,因此循环应该只向控制台写入使用我的方法的返回值为prime的值。我遇到的问题是,我将第二个条件设置为
numaray.Length
,但它似乎给了我
索引超出范围异常。我只希望循环遍历
numArray
中的所有值,并在确定最后一个值是否为素数时停止

public struct Prime
{
    public int x;


    // constructor for Prime
    public Prime(int x1)
    {
        x = x1;

    }

    public int IsPrime(int number)
    {
        int i;
        for (i = 2; i * i <= number; i++)
        {
            if (number % i == 0) return 0;
        }
        return 1;
    }
}

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Enter an Integer");
        int num1 = Convert.ToInt32(Console.ReadLine());
        Console.WriteLine("Enter a Second Integer of Greater Value");
    //    int num2 = 0;
        int num2 = Convert.ToInt32(Console.ReadLine());

    /*    if (num2temp > num1)
        {
            num2temp = num2;
        }
        else
        {
            Console.WriteLine("You Did Not Enter An Integer Greater Than the First Integer, Please Enter Your Integers Again.");
            Environment.Exit(0);
        }
    */    int index = 1;
        int[] numArray = new int[num2];
        for (int i = num1; i <= num2; i++)
        {
            numArray[index] = i;

            Console.WriteLine(" index: {0} assignment: {1}", index, i);
            index++;
            Console.WriteLine("index: {0}",index);
        }

        Console.WriteLine("value: {0}", numArray[40]);

    /*    Prime myprime = new Prime();

        if (myprime.IsPrime(numArray[12]) == 1)
        {
            Console.WriteLine("true");
        }
        else
        {
            Console.WriteLine("False");
        } */


        Prime myprime = new Prime();


       int value = 0;
        for (int y = 1; y <= num2; y++)
        {
            if (myprime.IsPrime(numArray[y]) == 1)
            {
                value = numArray[y];
                Console.Write("{0} \t", value);

            }

        } 
公共结构素数
{
公共int x;
//素数构造函数
公共素数(int-x1)
{
x=x1;
}
公共整数iPrime(整数编号)
{
int i;
对于(i=2;i*i num1)
{
num2temp=num2;
}
其他的
{
WriteLine(“您输入的整数没有大于第一个整数,请重新输入整数。”);
环境。退出(0);
}
*/int指数=1;
int[]numaray=新int[num2];

对于(inti=num1;i您的索引从1开始,但应该从0开始:

int index = 0; //CHANGE HERE
int[] numArray = new int[num2];
for (int i = num1; i <= num2; i++)
{
    numArray[index] = i;

    Console.WriteLine(" index: {0} assignment: {1}", index, i);
    index++;
    Console.WriteLine("index: {0}",index);
}
int index=0;//此处更改
int[]numaray=新int[num2];

对于(inti=num1;i您的索引从1开始,但应该从0开始:

int index = 0; //CHANGE HERE
int[] numArray = new int[num2];
for (int i = num1; i <= num2; i++)
{
    numArray[index] = i;

    Console.WriteLine(" index: {0} assignment: {1}", index, i);
    index++;
    Console.WriteLine("index: {0}",index);
}
int index=0;//此处更改
int[]numaray=新int[num2];

对于(int i=num1;i您当前正尝试迭代到数组的大小,包括数组的大小。数组在C#中为0索引。因此:

int[] numArray = new int[num2];
for (int i = num1; i <= num2; i++)
int[]numaray=newint[num2];

对于(int i=num1;i您当前正尝试迭代到数组的大小,包括数组的大小。数组在C#中为0索引。因此:

int[] numArray = new int[num2];
for (int i = num1; i <= num2; i++)
int[]numaray=newint[num2];

对于(inti=num1;i correction second condition被设置为-y correction second condition被设置为-y非常感谢!!它工作了!所以基本上我需要迭代到数组大小以下的1?@TheErrorAdvice:是的,基本上。但是这是值得理解的。非常感谢!!它工作了!所以基本上我需要迭代到数组大小以下的1e?@TheErrorAdvice:是的,基本上是这样。但这是值得理解的。