C#Dictionary.Clear和new Dictionary()C#之间的主要区别是什么?对于哪些情况推荐哪一个?
我正在学习 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有副作用吗?我应该更喜欢一种方法而不是另一种方法吗?
我还发现了一个类似的问题, 使用“清晰”方法与新对象, 我会让其他读者决定什么最适合他们自己的用例。所以我不会选择正确的答案。
我有一个稳定增长的元素列表,直到我将该列表中的所有数据转储到一个文件中.然后,我想再次将该列表重用于同一目的.简单地将其分配给新列表而不是从列表中删除所有元素是不好的做法吗?似乎垃圾收集应该处理旧列表,这样我就不必担心删除元素了.
例如:
var myList = new List<element>();
myList.Add(someElement);
myList.Add(anotherElement);
// dumps the elements into a file
myList = new List<element>();
Run Code Online (Sandbox Code Playgroud)
编辑:即使有很简单的方法,我也想知道它的哲学方面.如果周围有办法让垃圾收集起来是不是很糟糕?允许垃圾收集与删除元素和重用相同内存的成本是多少?
我想知道什么是更快.
list.Clear() or list = new List<..>()???
Run Code Online (Sandbox Code Playgroud)
哪一个留下了美好的记忆足迹?
引擎盖下会发生什么?
我知道这两个命令执行两个不同的事情,因为第一个清除列表但不破坏实例,第二个释放旧实例但初始化新实例虽然最终结果是相同的,那就是摆脱项目.