第二次使用时,List为空

时间:2016-01-20 03:16:40

标签: c# list

我的功能只在编译后才能工作。当它第二次出现时它不起作用。

我有将新项目添加到列表中的功能。

    public void addToDetailList()
    {
        tablist.Add(new OneStudentEvent()
        {
            Indeks = oneEvent.Indeks,
            Parts = oneEvent.Parts,
            Present = oneEvent.Present,
            PresentcString = oneEvent.PresentString
        });
    Console.Write("\nCount: " + tablist.Count);
    }

在其他功能中,我已返回此列表。

    public List<OneStudentEvent> getDetailEventInfo()
    {
        Console.Write("\ndb. Count on return: " + tablist.Count);
        return tablist;
    }

当我第一次编译并运行程序时,一切正常。 但是第二次,tablist.Count = 0。

在输入addToDetailList()之前清除我的列表:

        if(tablist.Count>0)
        {
            for (int i = tablist.Count - 1; i >= 0; i--)
            {
                tablist.RemoveAt(i);
                    Console.Write("\nUSUWAM WIERSZE Z LISTY element: " +i);
            }
        }

输出:

数:5 依靠回报:5

数:5 指望返回:0

1 个答案:

答案 0 :(得分:0)

getDetailEventInfo正在返回指向tablist的指针。也就是说,生成新列表。

运行var myList = getDetailEventInfo()然后从tablist中删除项目意味着您要从myList列表中删除项目。是同一个。

如果您改变您的方法:

return tablist.ToList();

然后您将返回一个全新的列表(这是源代码的副本),您的代码将按预期工作。