c#匿名方法,类属性值在函数调用之间回滚
本文关键字:函数调用 之间 属性 方法 | 更新日期: 2023-09-27 17:58:56
我有这样的代码:
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();
}
}
调用堆栈如下所示:匿名方法();OnFoo();DoSomething();OnBar();
我读过MSDN上关于使用匿名方法的外部变量的文章,但它们适用于局部变量,类级变量又如何呢。
为什么Flag在OnBar()方法中为false,以及如何解决这个问题。
这与匿名方法毫无关系。它一定是DoSomething
内部发生的事情。基本上有两种可能性:
1) 在DoSomething
:中重新设置标志
private void DoSomething()
{
Flag = false;
OnBar();
}
2) DoSomething
创建SomeClass
的一个新实例,并在此实例上调用OnBar
:
private void DoSomething()
{
new SomeClass().OnBar();
}