我有一个列表,并用 myObjects 填充了它。我对对象进行处理,然后我想通过释放对对象的引用来收集对象垃圾。这将如何最好地实现?
我不能使用 foreach 循环,因为你不能改变循环内的集合。
这会更新列表,并且不会创建包含新内容的新列表。
for (i = 0; i < list.Count; i++) {
list[i] = null;
}
You basically want to iterate through the list, and assign each object to null, like so:
var myList = new List<object>();
for (var i = 0; i < 9; i++)
{
myList.Add(new object());
}
for (var i = 0; i < myList.Count; i++)
{
myList[i] = null;
}
使用List(T).Clear()
方法:http: //msdn.microsoft.com/en-us/library/dwb5h52a.aspx
这将取消引用所有对象并将 Count 设置为 0。
如果您确实需要保持相同的计数并将列表中的每个项目设置为空,您可以简单地使用ForEach()
:
list.ForEach(x => x = null)