Я обнаружил фрагмент кода, который должен вызывать ошибку, потому что массив выходит за границы, но вместо этого он ведет себя странно. Когда я вхожу в него, он просто останавливается после 4 циклов и не добавляет элементы управления. Как это может быть, никаких ошибок или предупреждений компилятора или чего-нибудь еще?Ошибка при переходе по массиву границ?
Panel[] panel = new Panel[4];
Label[] label = new Label[4];
private void Form1_Load(object sender, EventArgs e)
{
for (int x = 0; x < 20; x++)
{
label[x] = new Label { Name = x.ToString("00"), BackColor = Color.Blue, Text = "Test" };
panel[x] = new Panel { Name = x.ToString("00"), BackColor = Color.Blue };
}
tableLayoutPanel1.Controls.AddRange(label);
tableLayoutPanel2.Controls.AddRange(panel);
}
Это не приведет к ошибке компиляции. Неужели вы на самом деле получаете ошибку во время выполнения? –
Компилятор не выполняет проверку границ, выполняется время выполнения. – spender
Он прав - я просто побежал, и он просто волшебным образом «останавливается» на 5-й итерации по петле и отображает форму. Действительно странно видеть, что и никакое исключение не было брошено. Изменить: нужно обернуть его или установить VS для исключения исключений. – Gjeltema