Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在为非空集合分配新值之前清除该集合_C#_Collections - Fatal编程技术网

C# 在为非空集合分配新值之前清除该集合

C# 在为非空集合分配新值之前清除该集合,c#,collections,C#,Collections,在我的代码中有一个集合,假设它声明为: List<SomeCustomClass> myCollection; 我的问题是,从记忆保存的角度来看,调用 myCollection.Clear(); 对于非空集合,请在使用新值填充集合之前通过: myCollection = UnitOfWork.Query<SomeCustomClass>().Where(.....).ToList(); myCollection=UnitOfWork.Query().Where(…)

在我的代码中有一个集合,假设它声明为:

List<SomeCustomClass> myCollection;
我的问题是,从记忆保存的角度来看,调用

myCollection.Clear();

对于非空集合,请在使用新值填充集合之前通过:

myCollection = UnitOfWork.Query<SomeCustomClass>().Where(.....).ToList();
myCollection=UnitOfWork.Query().Where(…).ToList();

否。您不是在重新填充现有集合,而是在将新集合分配给
myCollection
变量。将新集合分配给
myCollection
变量后,“旧”集合(如果没有其他可访问的引用)将变为
可供GC收集它和它的所有元素(如果没有其他从GC根到它们的引用)。

从内存保护的角度来看,调用….有意义吗。。。。No@Selvin谢谢你,塞尔文。“在用新值填充集合之前,通过”-这不是你要做的。您正在使用新值创建一个新集合,并替换存储在变量中的引用。在这一点上,假设没有其他变量保留对旧集合的引用,则旧集合(及其可能包含的任何项)可能有资格进行垃圾收集。如果你清除了它,你只是在做额外的浪费的工作。@Damien_不信者谢谢你,Damien。
myCollection = UnitOfWork.Query<SomeCustomClass>().Where(.....).ToList();