Estoy almacenando una acción en una variable local, luego estoy usando después de que la variable local esté fuera del alcance. ¿Corre el peligro de ser limpiado antes de usarlo? He aquí un ejemplo:Acción/Pregunta de administración de memoria de expresión de Lambda
public List<object> GetMaps() {
Action<Customer1, Customer2> baseMap = (Customer1 c1, Customer2 c2) => {
c2.FirstName = c1.FirstName;
};
var list = new List<object>() {
new Action<SpecialCustomer1 c1, SpecialCustomer2 c2>() {
baseMap(c1, c2);
c2.SpecialProperty = c1.SpecialProperty;
},
new Action<SpecialCustomer1 c1, SpecialCustomer2 c2>() {
baseMap(c1, c2);
c2.SpecialProperty2 = c1.SpecialProperty2;
},
};
return list;
}
Por lo tanto, se puede ver en este ejemplo que la función devuelve una lista de acciones que requieren baseMap
. baseMap
es solo una variable local. ¿El hecho de que se llame dentro de las otras acciones es suficiente para que .NET sepa que no debe limpiarlo?