Нужно ли включать «this» при использовании имени свойства в замыкании? - PullRequest
0 голосов
/ 03 мая 2010

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

Спасибо, что помогли мне разобраться в этом замыкании.

1 Ответ

3 голосов
/ 03 мая 2010

Нет, больше нет необходимости явно назначать член в качестве члена экземпляра в лямбда-выражении, как вне лямбда-выражения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...