我在一個局部變量中存儲了一個動作,然後我使用該局部變量超出了範圍。在使用之前它有被清理的危險嗎?這裏有一個例子:Action/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;
}
所以,你可以在這個例子中看到,函數返回的調用baseMap
操作的列表。 baseMap
只是一個局部變量。是否在.NET的其他行爲中被稱爲不清除它的事實?