有条件的代表?

soo*_*ise 3 c# conditional delegates

用户完成表单"f"后,表单将保留一个我要在运行doStuff()之前检查的值.比如,如果f.value> 0,则运行doStuff(),否则,不要运行doStuff().我怎样才能最简洁地修改我的代码以允许进行此项检查?我不太明白何时分配了委托,如果我传递f.value,它会在我添加委托时,还是在运行委托时取值?

form f = new form();
f.Show();
f.FormClosing += delegate{doStuff();};
Run Code Online (Sandbox Code Playgroud)

谢谢!

Tej*_*ejs 7

您可以在创建委托时捕获引用的值:

f.FormClosing += delegate { if(f.value > 0) doStuff(); };
Run Code Online (Sandbox Code Playgroud)

当事件发生时,它将检查捕获的引用的当前值f,如果条件匹配,则继续执行.