logo search
CSharp_Prog_Guide

Область действия переменной в лямбда-выражениях

Лямбда-выражения могут ссылаться на внешние переменные, попадающие в область действия включающего их метода или типа, в котором определено это выражение. Переменные, захваченные таким способом, сохраняются для использования в лямбда-выражениях даже в том случае, если эти переменные иначе попадают за границы области действия и уничтожаются сборщиком мусора. Внешняя переменная должна быть определенным образом назначена, прежде чем она сможет использоваться в лямбда-выражениях. В следующем примере показаны эти правила.

---

The following rules apply to variable scope in lambda expressions:

Следующие правила применимы к области действия переменной в лямбда-выражениях.

How to: Use Lambda Expressions Outside LINQ

Lambda expressions are not limited to LINQ queries. You can use them anywhere a delegate value is expected, that is, wherever an anonymous method can be used. The following example shows how to use a lambda expression in a Windows Forms event handler. Notice that the types of the inputs (Object and MouseEventArgs) are inferred by the compiler and do not have to be explicitly given in the lambda input parameters.

Example

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

// Use a lambda expression to define an event handler.

this.Click += (s, e) => { MessageBox.Show(((MouseEventArgs)e).Location.ToString());};

}

}