每个循环的List的前一个实例会发生什么?

时间:2017-08-04 11:10:36

标签: c# list instance

假设我有一个来自游戏的更新循环,每个循环我从类函数输出一个新列表并将其分配给'myList'。以前的更新功能列表会发生什么变化?我不得不担心吗?

//someClass
List<T> GetList()
{
   List<T> l = new List<T>(); // I create a new list here
   //populate the list.....
   return l; 
}

------------------
void Update()
{
  //game update loop
  List<T> myList = someClass.GetList(); 
  //what happens to the previous instance of list created?
}

1 个答案:

答案 0 :(得分:1)

列表是参考类型。当你做这样的事情时:

cordova create hello com.example.hello HelloWorld

List<T> l = new List<T>(); 创建一个列表对象。 new List<T>()包含对该对象的引用。当您创建另一个列表对象并将其分配给l

l

这些事情发生了:

  • 原始对象未被销毁
  • 创建新的列表对象
  • l = new List<T>(); 现在存储对新对象的引用

代码中的其他一些变量可能仍然是指原始列表对象。如果没有,则会发生以下情况。

原始列表对象现在可以进行垃圾回收。垃圾收集器将在某个未确定的时间点释放出那块内存。

注意:

重读代码后。我发现你的代码并没有真正按照你描述的那样做。您只创建了一个列表实例。这意味着在您的代码中,实例将被l引用,因此不会被垃圾回收。