0

我有一个项目列表,我想打印到控制台进行调试,但我只想一次显示 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");
}
4

2 回答 2

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");
}
于 2012-11-23T18:46:16.537 回答
0

当您退出方法时,在方法范围内创建的所有内容都会被丢弃,除非您向调用该方法的人返回一个值。

所以,你有两个选择(或更多,但这里有两个):

private static Item lastItem;

有了这个,你可以在你的类中存储最后一个显示的项目并在下次检索它。或者

public static Item itemlist(Boolean nextPage, Item nextItem)
{
    // Some logic
    return lastItem;
}

并让调用您的方法的人处理该变量。

于 2012-11-23T18:46:19.617 回答