假设我有一个来自游戏的更新循环,每个循环我从类函数输出一个新列表并将其分配给'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?
}
答案 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
引用,因此不会被垃圾回收。