我只是不知道某个方法中使用的变量在该方法执行完成后去了哪里,请看下面的代码片段:
void Foo()
{
List<object> conditionedObjList;
conditionedObjList = GetConditionedObjectList
(
new List<object>() { /*there are many unconditioned objects here*/}
);
}
我的问题; GetConditionedObjectList
方法中定义的变量 myObjList
是否会在 myObjList
返回后被处置,还是需要我们手动处置?
private List<object> GetConditionedObjectList(List<object> originalObjList)
{
List<object> myObjList = new List<object>();
/*do some selection*/
myObjList.AddRange(new object[]{/*there are 100 conditioned objects here*/});
return myObjList;
}
最佳答案
C# 有垃圾回收功能。对象在堆上创建,并且仅当该对象不再有对其的引用时才被收集。
myObjList
仅存储对堆上实际对象的引用;当您返回此引用并将其存储在变量中时,您可以保证垃圾收集器 (GC) 不会拾取它。
如果“处置”是指“销毁”或“从内存中删除”,那么垃圾收集器会为您执行此操作;您需要做的就是删除对该对象的引用。例如,您可以在调用该函数后将 conditionedObjList
设置为 null
。然后 GC 就可以自由地拾取未引用的对象。请注意,这不是立即发生的; GC 仅定期运行以提高效率。
关于c# - 这个变量在使用后会被释放吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5386890/