Использование лямбда-выражений в C#
Пример
private void radF3_CheckedChanged(object sender, EventArgs e) { DrawGraph((float x, float y) => (float)(x * x + (y - Math.Pow(x * x, 1.0 / 3.0)) * (y - Math.Pow(x * x, 1.0 / 3.0)) - 1) ); }
Это выражение работает, но это все одно утверждение, поэтому его длина делает его довольно запутанным.
Технически это называется «выражение лямбда», потому что его часть справа является выражением, которое возвращает некоторое значение. Вместо использования выражения lambdas код может использовать оператор lambdas. Заявление lambdas содержит любое количество операторов внутри фигурных скобок.
Заявление lambdas, возвращающее значение, должно использовать оператор return, как и метод. Как и выражение lambdas, оператор lambdas может позволить Visual Studio использовать вывод для определения типов параметров лямбда или вы можете явно включать типы параметров.
В следующем коде показан предыдущий обработчик событий, перезаписанный с помощью оператора lambda.
private void radF3_CheckedChanged(object sender, EventArgs e) { DrawGraph((float x, float y) => { float temp = (float)(y - Math.Pow(x * x, 1.0 / 3.0)); return (x * x + (temp * temp) - 1); } ); }
Это упрощает расчет в этом примере. В более сложном примере оператор lambdas может сделать намного больше, чем выражение lambda, которое может выполнять только одну строку кода.
Вот краткое описание форматов форматов лямбда.
x => x * x
(x, y) => x * y
(float x, float y) => x * y
(x, y) => { float result = x + y; MessageBox.Show("Result: " + result.ToString()); }
(x, y) => { float temp = x + y; return temp * temp; }
(float x, float y) => { float temp = x + y; return temp * temp; }