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();