如何使列表中的每个对象为null

时间:2013-07-27 11:43:42

标签: c# .net

我有一个列表,我用myObjects填充它。我使用对象进行处理,然后我希望通过释放对象的引用来收集垃圾。如何最好地实现这一目标?

我不能使用foreach循环,因为你无法在循环中改变集合。

4 个答案:

答案 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)