我有一个项目列表,我想打印到控制台进行调试,但我只想一次显示3个项目,但这是在一个函数内,所以它需要知道它从哪里停止所以它可以从以前的3个项目我怎么能做到这一点?
static void list(Boolean nextPage)
{
static List<Item> _items = new List<Item>();
//if(nextPage) display next page
Console.WriteLine("Press numbers 1 - 3 to display more info on an item or press 4 for next page...\r\n");
int count = 0;
foreach (Item item in _items)
{
Console.WriteLine((count + 1) + ": Name: " + item.itemName + ", ");
count++;
}
Console.WriteLine(("4: Next Page");
}
答案 0 :(得分:4)
使你的函数非静态,添加一个变量来存储你到目前为止显示的最后一个项目,使用该变量来决定从哪里开始下一个列表,并在每次经过时将该值提前三功能
这是对你如何做到的粗略近似 - 这可能无法作为你的功能的复制粘贴替代品,但它应该让你知道该怎么做:
int lastPosition;
void list(Boolean nextPage) {
if(!nextPage) {
lastPosition = 0;
}
Console.WriteLine("Press numbers 1 - 3 to display more info on an item or press 4 for next page...\r\n");
foreach (Item item in _items.Skip(lastPosition).Take(3))
{
Console.WriteLine((count + 1) + ": Name: " + item.itemName + ", ");
}
lastPosition += 3;
Console.WriteLine(("4: Next Page");
}
答案 1 :(得分:0)
在退出方法时,在方法范围内创建的所有内容都会被删除,除非您向调用方法的人返回值。
所以,你有两个选择(或更多,但这里有两个):
private static Item lastItem;
这样,您可以在班级中存储显示的最后一项,并在下次检索它。 或
public static Item itemlist(Boolean nextPage, Item nextItem)
{
// Some logic
return lastItem;
}
让任何调用你的方法的人都可以处理变量。