When I run this it says that index was outside of bounds for the array but it is not. If I change public static ConectorRec[] ch = new ConectorRec[74]; to ConectorRec[] ch = new ConectorRec[75]; then they are not all referenced to an object and throws other errors on other parts of my code.
using System;
using System.Drawing;
using System.Windows;
using System.Windows.Forms;
using System.Collections.Generic;
namespace Dots
{
public static class Conectors
{
public static ConectorRec[] ch = new ConectorRec[74];
public static void intitialize()
{
ch[0] = new ConectorRec(new Rectangle(10, 20, 10, 40));
ch[1] = new ConectorRec(new Rectangle(20, 10, 40, 10));
ch[2] = new ConectorRec(new Rectangle(20, 60, 40, 10));
ch[3] = new ConectorRec(new Rectangle(60, 20, 10, 40));
int t = 0;
int tt = 1;
for (int i = 4; i<73; i++)
{
t++;
if (t == 1)
{
ch[i] = new ConectorRec(new Rectangle(50 * tt + 20, 10, 40, 10));
}
if (t == 2)
{
ch[i] = new ConectorRec(new Rectangle(50 * tt + 20, 60, 40, 10));
}
if (t == 3)
{
tt++;
ch[i] = new ConectorRec(new Rectangle(50 * tt + 10, 20, 10, 40));
t = 0;
}
}
ch[74] = new ConectorRec(new Rectangle(10, 70, 10, 40));
}
}
}
please tell me what I am doing wrong and how to fix this error.
When I run this it says that index was outside of bounds for the array but it is not
Yes it is. Even if I couldn't pinpoint the problem, I'd always bet on the runtime being more accurate than the developer's opinion on this...
This is the problem, after the loop:
ch[74] = new ConnectorRec(...);
You've declared the array to have 74 elements here:
public static ConectorRec[] ch = new ConectorRec[74];
So the valid indexes are 0..73 inclusive. If you want to make 74 a valid index, you need to declare it to have 75 elements:
public static ConectorRec[] ch = new ConectorRec[75];
See more on this question at Stackoverflow