我創建了四個TextBox
es(按此順序:textBox1
,textBox2
,...),並將它們放在GroupBox
的下方。然後我說的Click事件:GroupBox中TextBoxes的foreach循環按相反順序迭代?
private void button1_Click(object sender, EventArgs e)
{
foreach (TextBox tb in groupBox1.Controls.OfType<TextBox>())
{
if (string.IsNullOrWhiteSpace(tb.Text))
{
Console.WriteLine(tb.Name);
}
}
}
當我運行該程序,然後單擊Button
(當所有TextBox
ES是空的),這是輸出我得到:
textBox4
textBox3
TextBox2中
textBox1的
顯然foreach
循環以相反的順序遍歷GroupBox
控件。我預計它將從textBox1
到textBox4
,因爲這是他們創建並放入組框的順序。
爲什麼foreach
反向循環?只是好奇...
您正在假設。當您觀察Visual Studio中的數據結構(並展開集合)時,您看到它們的順序是什麼?大多數收藏品不保證訂單,如果您需要的話,可以使用已排序的收藏或在使用之前進行排序。 –
TimSchmelter已經證實了這個實現,這個集合會按照添加項目的順序來列舉的假設顯然是問題的關鍵所在。 'foreach'只是'GetEnumerator'返回的狀態機周圍的編譯器糖,它可以有一個完全自定義的實現。 –
訂單在哪種情況下很重要? – Jodrell