我正在学习 C#。
如果我首先创建一个变量来保存列表。
List<int> mylist = new List<int>();
Run Code Online (Sandbox Code Playgroud)
假设我对列表做了一些工作,现在我想清除列表以将其用于其他用途。所以我执行以下操作之一:
方法一:
mylist.Clear();
Run Code Online (Sandbox Code Playgroud)
方法二:
mylist = new List<int>();
Run Code Online (Sandbox Code Playgroud)
目的只是清空列表中的所有值以重用列表。
使用方法2有副作用吗?我应该更喜欢一种方法而不是另一种方法吗?
我还发现了一个类似的问题, 使用“清晰”方法与新对象, 我会让其他读者决定什么最适合他们自己的用例。所以我不会选择正确的答案。
小智 7
使用方法 2 可能会导致程序出现意外行为,具体取决于您使用列表的方式。
如果你要做类似的事情:
List<int> myList = new List<int> { 1, 2, 3 };
someObj.listData = myList;
myList = new List<int>(); // clearing the list.
Run Code Online (Sandbox Code Playgroud)
“someObj”中的数据仍然是 1,2,3。
但是,如果您执行 myList.clear() ,那么“someObj”中的数据也会被清除。
我刚刚还有一个想法。如果您对原始列表有悬空引用,并使用 new 重新分配变量以清除它,则 GC 将永远不会清理该内存。我想说,如果您需要清空列表的内容,那么使用 .clear() 方法总是更安全。
| 归档时间: |
|
| 查看次数: |
6954 次 |
| 最近记录: |