将捕获的变量用作lambda中的全局变量

时间:2015-08-07 09:12:44

标签: c# lambda

使用这样的捕获变量(避免使用私有字段)是个好主意:

static MyContentControl()
{
    var a = false;
    ContentProperty.OverrideMetadata(typeof(AnimatedContent), new FrameworkPropertyMetadata(null, (d, e) =>
    {
        if (a)
        {
            a = false;
            ...
        }
        else
        {
            a = true;
            ...
        }
    }));
}

虽然它有效,但我关注的是背后发生的事情(可能存在一种性能低效的机制,以实现这一点)。因为a的值可以在定义lambda之后设置,或者,a可以在多个lambda中使用。也许它会成为volatile或其他什么?

我要保留它还是宁可使用私有静态字段?

0 个答案:

没有答案
相关问题