Я просто не знаю, куда исчезла переменная, используемая в каком-то методе, после завершения выполнения метода, см. фрагмент кода ниже:
void Foo()
{
List<object> conditionedObjList;
conditionedObjList = GetConditionedObjectList
(
new List<object>() { /*there are many unconditioned objects here*/}
);
}
Мой вопрос; переменная myObjList
, определенная в методе GetConditionedObjectList
, будет удалена после того, как 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;
}
GetConditionedObjectList
полностью игнорирует входящий параметр. (Возможно, это не имеет значения, но затемняет ваш вопрос.) Когда вызовGetConditionedObjectList
возвращается, локальная переменная (в Foo)conditionedObjList
будет ссылкой на списокmyObjList
, который вы создали вGetConditionedObjectList
. Когда Foo выйдет, ссылки на список больше не будет, и он будет помечен для сборки мусора. - person Joel Lee   schedule 22.03.2011