Использование лямбда-выражений в C#

Пример Использование лямбда-выражений в 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;
}

Источник: http://csharphelper.com/blog/2017/11/use-statement-lambdas-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector