我对C#还是相当陌生,因此,如果这是一个简单的问题,对不起,
-
我有一个库存对象列表,并且我正在使用一个for循环向后浏览该列表。库存对象的每个属性都设置为一个文本框以显示该值,并且有一个按钮允许用户循环浏览每个对象,从而更改文本框的值。
我需要告诉我是否到达列表的开头,以便我可以停用允许用户向后浏览列表的按钮。
注意-计数> 1,因为我不得不跳过列表中的第一项。
这是我的代码:
if (stockList.Count > 1)
{
for (int i = stockList.Count - 1; i >= 0; i--)
{
txtName.Text = stockList[i].Name;
numLastPrice.Value = stockList[i].LastPrice;
numOpeningPrice.Value = stockList[i].OpeningPrice;
numLowPrice.Value = stockList[i].LowPrice;
numHighPrice.Value = stockList[i].HighPrice;
if (i == ???)
{
txtName.Text = stockList[i].Name;
numLastPrice.Value = stockList[i].LastPrice;
numOpeningPrice.Value = stockList[i].OpeningPrice;
numLowPrice.Value = stockList[i].LowPrice;
numHighPrice.Value = stockList[i].HighPrice;
btnBack.Enabled = false;
}
}
如果该列表中有10个项目,那么您将从9倒退到0(默认情况下索引为零)
在您的情况下,0
表示列表中的第一项,因此只需检查索引为0
if (i == 0)
(阅读评论后进行编辑)
在您的for
循环中,您将i
声明为int
,其值为.Count - 1
:
for (int i = stockList.Count - 1; i >= 0; i--)
所以在循环中i
只是一个变量,但是由于声明方式的不同,它也将是您在循环中迭代时列表的索引值。
希望有所帮助。
我希望以下代码片段可以帮助您了解i
与列表之间的关系:
var myList = new List<string>() { "A", "B", "C", "D", "E" };
for (int i = myList.Count() - 1; i >= 0; i--)
{
Console.WriteLine($"i:{i}, myList[{i}]={myList[i]}");
if (i == 3)
{
//I can access the elements at an index different than `i`
Console.WriteLine($"i:{i}, Seaky peek at the 5th element (index 4): {myList[4]}");
}
}
// This would cause a compilation error because `i` is being used outside of `for`
//i = 100; // Error: The name 'i' does not exist in the current context
Console.WriteLine($"First item is myList[0] and is '{myList[0]}'");
Console.WriteLine($"Last item is myList[myLIst.Count()-1] ans is '{myList[myList.Count() - 1]}'");
// Let's go through the list again
for (int someNameForIndex = myList.Count() - 1; someNameForIndex >= 0; someNameForIndex--)
{
Console.WriteLine($"i:{someNameForIndex}, myList[{someNameForIndex}]={myList[someNameForIndex]}");
}
这将产生以下输出
i:4, myList[4]=E
i:3, myList[3]=D
i:3, Seaky peek at the 5th element (index 4): E
i:2, myList[2]=C
i:1, myList[1]=B
i:0, myList[0]=A
First item is myList[0] and is 'A'
Last item is myList[myLIst.Count()-1] ans is 'E'
i:4, myList[4]=E
i:3, myList[3]=D
i:2, myList[2]=C
i:1, myList[1]=B
i:0, myList[0]=A