委托演变lambda

委托可以演变为匿名方法,然后由匿名方法演变成为Lambda。

static void MM(string[] args)
{
    // 无参数无返回值的匿名方法
    Action a1 = delegate ()
    {
        Console.WriteLine("这是一个匿名方法");
    };
    a1();
    // 有参数无返回值的匿名方法
    Action<string, string> a2 = delegate (string s, string t)
    {
        Console.WriteLine($"s={s},t={t}");
    };
    a2("1","2");
    // 有参数有返回值的匿名方法
    Func<int, int, int> f1 = delegate (int x, int y)
    {
        return x + y;
    };
    Console.WriteLine(f1(1, 2));

    // 有参数有返回值的匿名方法 缩写1 省略delegate 改为 =>
    Func<int, int, int> f2 = (int x, int y) =>
    {
        return x + y;
    };
    Console.WriteLine(f2(1, 2));

    // 有参数有返回值的匿名方法 缩写2 代码有返回值并且只有一行代码,省略{}和return
    Func<int, int, int> f3 = (int x, int y) => x + y;
    Console.WriteLine(f3(1, 2));

    // 有参数有返回值的匿名方法 缩写3 参数列表的类型是可以省略的
    Func<int, int, int> f4 = (x, y) => x + y;
    Console.WriteLine(f4(1, 2));


    // 无参数无返回值的匿名方法 缩写1 无参数无返回值省略{}
    Action s1 = () =>  Console.WriteLine("这是一个匿名方法 缩写形式");
    s1();

    // 有参数无返回值的匿名方法 缩写2 有一个参数无返回值省略{}和()
    Action<string> s2 = x => Console.WriteLine($"{x}");
    s2("fdsaf");


}
posted @ 2023-11-26 17:59  Simian_2018_12_22  阅读(5)  评论(0编辑  收藏  举报