使用这样的捕获变量(避免使用私有字段)是个好主意:
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
或其他什么?
我要保留它还是宁可使用私有静态字段?