我正在学习 C#。
如果我首先创建一个变量来保存列表。
List<int> mylist = new List<int>();
假设我对列表做了一些工作,现在我想清除列表以将其用于其他用途。所以我执行以下操作之一:
方法一:
mylist.Clear();
方法二:
mylist = new List<int>();
目的只是清空列表中的所有值以重用列表。
使用method2有什么副作用吗?我是否应该偏爱一种方法而不是另一种方法。
我也发现了一个类似的问题,
Using the "clear" method vs. New Object
我会让其他读者决定什么最适合他们自己的用例。所以我不会选择正确的答案。
最佳答案
使用方法 2 可能会导致程序中出现意外行为,具体取决于您使用列表的方式。
如果您要执行以下操作:
List<int> myList = new List<int> { 1, 2, 3 };
someObj.listData = myList;
myList = new List<int>(); // clearing the list.
“someObj”中的数据仍将是 1,2,3。
但是,如果您改为执行 myList.clear(),那么“someObj”中的数据也将被清除。
我刚刚有一个额外的想法。如果您对原始列表有悬空引用,并使用 new 重新分配变量以清除它,则 GC 将永远不会清理该内存。如果您需要清空列表的内容,我会说使用 .clear() 方法总是更安全。
关于c# 清除列表与将新列表分配给现有变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54135574/