在提出问题之前,我担心的是,如果列表本身设置为null,则列表中的项不会设置为null ...因此会留下一些不干净的引用。
假设我有一个简单的人员清单
public class Person
{
string Name {get;set;}
string Title {get;set;}
int ID {get;set;}
};
Run Code Online (Sandbox Code Playgroud)
现在我以某种方式填充该列表
public List<Person> GetMeSomePeople()
{
Person newPersonA = new Person
{
Name = "Michael",
Title = "C# Code Guy",
ID = 1
};
//... add more people
List<Person> People = new List<Person>();
People.Add(newPersonA);
//...add more people to list
return People;
}
Run Code Online (Sandbox Code Playgroud)
这是一个问题...现在我要取消此列表。
最佳实践是遍历列表并将每个对象设置为null吗?
还是清楚?
People.Clear();
Run Code Online (Sandbox Code Playgroud)
或者只是将列表设置为空
People = null;
Run Code Online (Sandbox Code Playgroud)
最后,如果您有某种方法可以重新填充该列表...在执行此操作之前,应该正确将列表无效吗?
//Already populated People with 2 Person
People = GetMeSomeMorePeople();
Run Code Online (Sandbox Code Playgroud)
最佳实践是遍历列表并将每个对象设置为null吗?
还是清楚?
或者只是将列表设置为空
以上都不是。
只需让列表(人)“自然地”超出范围,或用新列表覆盖变量即可。
您要做的所有清理工作:无。
最后,如果您有某种方法可以重新填充该列表...在执行此操作之前,应该正确将列表无效吗?
没有。
垃圾收集工作遵循“可达性”原则。一旦您的主引用(人)被覆盖,以前的列表实例将变得不可访问。下一轮GC将收集它。以及其中的所有项目,只要未在其他地方引用。
| 归档时间: |
|
| 查看次数: |
90 次 |
| 最近记录: |