我的功能只在编译后才能工作。当它第二次出现时它不起作用。
我有将新项目添加到列表中的功能。
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
答案 0 :(得分:0)
getDetailEventInfo
正在返回指向tablist
的指针。也就是说,不生成新列表。
运行var myList = getDetailEventInfo()
然后从tablist
中删除项目意味着您要从myList
列表中删除项目。是同一个。
如果您改变您的方法:
return tablist.ToList();
然后您将返回一个全新的列表(这是源代码的副本),您的代码将按预期工作。