Я использую список действий для хранения истории отмен объекта. Допустим, у меня есть свойство моего объекта myChildObject, и оно мутирует при вызове метода, поэтому я хочу сохранить действие отмены, в котором я бы изменил его обратно до его текущего значения:
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 на локальную переменную?
Спасибо, что помогли мне разобраться в этом замыкании.