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 the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.