我有一个列表,我用myObjects填充它。我使用对象进行处理,然后我希望通过释放对象的引用来收集垃圾。如何最好地实现这一目标?
我不能使用foreach循环,因为你无法在循环中改变集合。
答案 0 :(得分:2)
这会更新列表,而不会创建包含新内容的新列表。
for (i = 0; i < list.Count; i++) {
list[i] = null;
}
答案 1 :(得分:0)
using System.Collections.Generic; // required for `IEnumerable<T>`
using System.Linq; // required for the `Select` LINQ operator
static IEnumerable<T> ReplaceAllByNullReferences(this IEnumerable<T> xs) where T : class
{
return xs.Select(x => null);
} // ^^^^^^^^^^^^^^^^^^^^
// returns a sequence of the same length as the original sequence
// in which every object reference has been replaced by a null reference
答案 2 :(得分:0)
您基本上想要遍历列表,并将每个对象分配为null,如下所示:
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;
}
答案 3 :(得分:-2)
使用List(T).Clear()
方法:http://msdn.microsoft.com/en-us/library/dwb5h52a.aspx
取消引用所有对象并将Count设置为0.
如果您确实需要保持相同的计数并将列表中的每个项目设置为null,则只需使用ForEach()
:
list.ForEach(x => x = null)