我在我的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 :(得分:2)
我不确定数据类型BD
是什么,但我必须假设它是一个可索引的列表(即它具有this[int]
属性,并且Count
,{{ 1}},或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
答案 1 :(得分:1)
您可以在通过foreach
之前使用反向列表,但这不如使用for
循环并向后迭代它那样高效,如下所述:Possible to iterate backwards through a foreach?