在闭包中使用属性名称时是否需要包含'this'?

时间:2010-05-03 02:01:16

标签: c# closures

我正在使用一系列操作来存储对象的撤消历史记录。假设我有一个名为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();
    }
}

查看lambda表达式,是对传递的myChildObject(对象)的引用,或者是对'this'的引用。我是否需要使用'this'作为序言?我是否需要首先复制“this”对局部变量的引用?

感谢您帮助我了解这个关闭内容。

1 个答案:

答案 0 :(得分:3)

不,不再需要明确地将成员指定为lambda中的实例成员而不是lambda之外的成员。