0
我正在使用動作列表來存儲對象的撤消歷史記錄。比方說,我有一個名爲myChildObject我的對象的屬性和它的被一個方法調用突變,所以我要存儲撤消行動,我會變異它回到它的當前值:在閉包中使用屬性名稱時是否需要包含'this'?
public class Class1
{
public Class1()
{
}
private readonly List<Action> m_undoActions = new List<Action>();
private SomeObject myChildObject { get; set; }
public void ChangeState()
{
m_undoActions.Add(() => myChildObject.UndoChangeState());
myChildObject.ChangeState();
}
}
縱觀拉姆達表達式,是對myChildObject(對象)的引用,或者是對this傳遞的引用。我需要使用「這個」來作爲序言嗎?我是否需要先複製一個局部變量的'this'引用?
謝謝你幫我理解這封閉的東西。
對不起,我改變了我的問題,使其更清晰。我試圖找出傳遞給閉包的內容:對'this'的引用還是對子對象本身的引用? – 2010-05-03 02:17:32
你現在擁有的不是真正的封閉。這隻會導致創建實例方法而不是靜態方法。 – 2010-05-03 02:23:05
如果我想使它成爲一個真正的閉包,我會創建一個局部變量,如:var me = this;然後在lambda中調用me.myChildObject.UndoChangeState()? – 2010-05-03 02:28:23