我有这样的代码:
public class SomeClass
{
private bool Flag;
public void OnBar() //this is called from DoSomething();
{
if (Flag) //For some reason Flag=false
}
public void OnFoo() //this is called from some anonymous method (not mine)
{
Flag = true;
DoSomething();
}
}
Callstack看起来像这样: AnonymousMethod(); OnFoo(); 做一点事(); 的OnBar();
我已经阅读了MSDN关于使用匿名方法的外部变量的文章,但它们适用于局部变量,类级变量怎么样。
为什么在OnBar()方法中Flag是错误的,以及如何解决这个问题。
答案 0 :(得分:3)
这绝对与匿名方法无关。它必须是DoSomething
内发生的事情。
基本上有两种可能性:
1)在DoSomething
:
private void DoSomething()
{
Flag = false;
OnBar();
}
2)DoSomething
创建SomeClass
的新实例并在其上调用OnBar
:
private void DoSomething()
{
new SomeClass().OnBar();
}