2017-08-05 30 views
0

我在我的foreach循環中使用了這種語法,它循環通過它應該,但有沒有辦法讓循環開始在最後一個索引,而不是第一個?對象反序[]參數

這是我用來從第一個元素開始的語法,但是它可以被改變,以便它開始反向?

foreach (BD bData in bl.NameList) 
{ 
Object[] param = new Object[2]; 
param[0] = bData.m_Width; 
param[1] = bData.m_Height; 
DataGrid1.Rows.Insert(0, param); 
} 
+0

你能說說我們爲什麼要反向迭代嗎? – mjwills

回答

2

我不知道什麼數據類型BD是,但我必須假設它是一個可索引列表(即它有一個this[int]屬性,並且Count,GetUpperBound()Length屬性)。否則,問題是「我可以以相反的順序嗎?」是一個毫無意義的問題,因爲你將使用一個不確定順序的列表,這個列表也會有一個不確定的反向順序。

因此,鑑於它是可轉位的,您只需使用for循環代替foreach即可。

for (int i = bd.NameList.Count-1; i>=0; i--) 
{ 
    var bData = bd.NameList[i]; 
    Object[] param = new Object[2]; 
    param[0] = bData.m_Width; 
    param[1] = bData.m_Height; 
    DataGrid1.Rows.Insert(0, param); 
} 

或者......如果你愛枚舉...只是使用Add(X),而不是Insert(0, X),這將追加到列表的末尾。顯然這隻有在你添加到DataGridViewRowCollection時纔有效,並且在其他情況下可能不起作用。

foreach (BD bData in bl.NameList) 
{ 
    Object[] param = new Object[2]; 
    param[0] = bData.m_Width; 
    param[1] = bData.m_Height; 
    DataGrid1.Rows.Add(param); 
}