首页 > 其他分享 >Lamda进化史

Lamda进化史

时间:2022-12-02 10:09:05浏览次数:55  
标签:Lamda Console Func int void Add WriteLine 进化史



委托—>匿名方法—>Func && Anction—>Lamda诞生—->Lamda异步

委托

public delegate void AddDelegate(int a,int b);

public void Run()
{
AddDelegate add = new AddDelegate(Add);
add(1,5);
}

public void Add(int a,int b)
{
Console.WriteLine(a+b);
}

匿名方法

public delegate int AddDelegate(int a,int b);

public void Run()
{
Test1();

Test2();
}

/// <summary>
/// 第一次进化
/// </summary>
void Test1()
{
AddDelegate add = new AddDelegate(delegate(int a,int b) { return a + b; });
int num = add(1, 5);
Console.WriteLine(num);
}

Func&&Action

/// <summary>
/// 第二次进化
/// </summary>
void Test2()
{
Func<int, int, string> add = new Func<int, int, string>(delegate(int a,int b) { int num = a + b;return "result is:"+num; });

Console.WriteLine(add(10,23));
}

public void Run()
{
Test(ResultOK,ResultError);
}

void Test(Action ok,Action error)
{
if (true)
ok();
else
error();
}

void ResultOK()
{
Console.WriteLine("OK");
}

void ResultError()
{
Console.WriteLine("Error");
}

Lamda诞生

/// <summary>
/// 原始
/// </summary>
void T1()
{
Func<int, int, string> Add = delegate (int a, int b) { int num = a + b; return (a + b).ToString(); };
Console.WriteLine(Add(300, 400));
}

/// <summary>
/// 多参数
/// </summary>
void T2()
{
Func<int, int, string> Add = (int a, int b) => { int num = a + b; return (a + b).ToString(); };
Add = (a, b) => { return (a + b).ToString(); };
Add = (a,b) => (a + b).ToString();
Console.WriteLine(Add(6, 400));
}

/// <summary>
/// 单参数
/// </summary>
void T3()
{
Func<int,int> add= (a) => 10 + a;
add = a => 10 + a;
}

Lamda异步

public void Run()
{
///无返回值的类型,可以直接用Wait代替!!!!!!!!!!
T1().Wait();
}


/// <summary>
/// 异步操作
/// </summary>
/// <returns></returns>
async Task T1()
{
Func<string, Task<string>> func = async t => { await Task.Delay(300); Console.WriteLine(t); return "aa"; };
string data = await func("aaa");
Console.WriteLine(data);




Func<int, int, Task> func1 = async (a, b) => { await Task.Delay(500); Console.WriteLine(a + b); };

func1(10, 20).Wait() ;
}

标签:Lamda,Console,Func,int,void,Add,WriteLine,进化史
From: https://blog.51cto.com/u_11295556/5904995

相关文章

  • JAVA8-用lamda表达式和增强版Comparator进行排序
    以前的排序一般对象实现Comparable或者Comparator接口,经常是通过匿名类类实现。可以参见以前的博文Java中​​Comparable和Comparator比较​​现在看看使用lamda......
  • Lamda表达式
    Lamda表达式λ希腊字母表中排序第十一位的字母,英语名称为lambdaLambda表达式是在Java8中引入的,并且成为了Java8最大的特点。它使得功能性编程变得非常便利,极大地......
  • Java——多线程:Lamda表达式
    多线程理解继承Thread类子类继承Thread类具备多线程能力启动线程:子类对象.start()不建议使用:避免oop单继承局限性实现Runnable接口实现接口Runnable具有多......
  • Java使用lamda表达式简化代码
    代码,自然写的越简洁越好啦,写的人舒服,看的人也舒服,一切为了高效。要把有限的时间花到其它有意思的事情上去。目的学习简化代码的思路,使用jdk8新特性lamada表达式。推理......
  • Lamda表达式
    Lambda表达式λ希腊字母表中排序第十一位的字母,英文名称为Lambda其实质属于函数式编程的概念为什么要使用lambda表达式:避免匿名内部类定义过多可以让代码看起......
  • Lamda表达式
    Lamda表达式避免匿名内部类定义过多;使得代码简洁其实质属于函数式编程的概念(params)->expression[表达式](params)->statement[语句](params)->{statements}......
  • Lamda表达式
    Lamda表达式定义函数语法:​​可访问外部变量​​->返回值{函数体}​​变量名1,变量2...​​{}指定部分变量访问​​=​​{}值传递形式捕获所有外......
  • Java_Lamda表达式
    Lamda表达式λ希腊字母表中排序第十一位的字母,英文为Lambda避免匿名内部类定义过多其实质属于函数式编程的概念(params)->expression[表达式](params)->statement......
  • Java lamda表达式 Predicate<T>、BiFunction<T,T,R>、FunctionalInterface 应用实例说
    使用相对应的函数式接口,可使编写程序在某些时候变得更高雅和灵活,下面对各种情况进行说明ps:核心原理就是将方法作为一个参数传到另一个方法,使该方法处理内容更丰富和灵......
  • lamda代码演示
    publicclassPerson{privateintid;privateStringname;publicintgetId(){returnid;}publicvoidsetId(intid){......