Closures: Captured Outer Variables

Because of their capability to capture local variables from the outer scope, anonymous function expressions are much more powerful than would seem to be the case at first glance. Let’s take a look at an example:

static void Main() {    int factor = 2;    BinOp addAndFactor = delegate (int a, int b) { return factor * (a + b); };    int six = addAndFactor(1, 2);}

In the preceding code fragment, the local variable factor is captured inside the embedded inline method declaration. This is a powerful capability that reduces plumbing significantly. Imagine how you would communicate the factor value to a delegate if you couldn’t simply use an anonymous function expression. A more real-world ...

Get C# 5.0 Unleashed now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.