What is the scope of a lambda variable in C#?

The brackets give the clue – the lambda variable is captured in the scope of where it’s declared:

.Where(o => ... olist.Where(o1 => ...).Max(o1 => ...))
  //  |----------------------------------------------| scope of o
  //                       |---------|                 scope of first o1
  //                                      |---------|  scope of second o1

Note that there’s no overlap for the two o1 variables, but they both overlap (or shadow) the o variable and hence can’t use the same name.

Leave a Comment