我發現了一段代碼,應該會產生一個錯誤,因爲該數組超出界限,但相反,它的行爲奇怪。當我進入它時,僅僅在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
他是對的 - 我只是跑了這個,並且在第五次循環中神奇地「停止」了,並顯示了表格。真的很奇怪看到這一點,並沒有拋出異常。編輯:需要包裝它,或設置VS打破例外。 – Gjeltema