c# - Should local variables be used in lambda statements when passed as delegates? -


if have method takes argument of type action, example:

public void foo(action bar) {     bar?.invoke(); } 

and wish pass lambda uses local variable, e.g.:

private void someevent(object sender, someeventargs e) {     foo(() => { e.cancel = true; }); } 

will lambda execute expected respect use of local variable, in case, e? mean is, when foo() called , in turn attempts call lambda, know e? or e out of scope , should following instead?

private void someevent(object sender, someeventargs e) {     foo((someeventargs a) => { a.cancel = true; }, e); }  public void foo(action<someventargs> bar, someeventargs e) {     bar?.invoke(e); } 

yes, should work expected. called "variable capture", , explained here.

in example, e variable captured, won't go out of scope.


Comments

Popular posts from this blog

javascript - Clear button on addentry page doesn't work -

c# - Selenium Authentication Popup preventing driver close or quit -

tensorflow when input_data MNIST_data , zlib.error: Error -3 while decompressing: invalid block type -