将List <T>设置为Null的最佳实践

mel*_*ant 0 c# list

在提出问题之前,我担心的是,如果列表本身设置为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)

Hen*_*man 5

最佳实践是遍历列表并将每个对象设置为null吗?
还是清楚?
或者只是将列表设置为空

以上都不是。

只需让列表(人)“自然地”超出范围,或用新列表覆盖变量即可。

您要做的所有清理工作:无。

最后,如果您有某种方法可以重新填充该列表...在执行此操作之前,应该正确将列表无效吗?

没有。

垃圾收集工作遵循“可达性”原则。一旦您的主引用(人)被覆盖,以前的列表实例将变得不可访问。下一轮GC将收集它。以及其中的所有项目,只要未在其他地方引用。