多播委托和匿名方法再加上Lambda表达式

  多播委托就是好几个方法全都委托给一个委托变量

  代码:

 1 namespace 委托
 2 {
 3     class Program
 4     {
 5         static void math1()
 6         {
 7             Console.WriteLine("这是第一个方法");
 8         }
 9
10         static void math2()
11         {
12             Console.WriteLine("这是第二个方法");
13         }
14
15         static void Main(string[] args)
16         {
17
18             //多播委托
19             Action vae = math1;
20             vae += math2;
21             Delegate [] deleg = vae.GetInvocationList();  //把vae这个委托里面的方法全部给一个委托数组
22             foreach (Delegate item in deleg)
23             {
24                 item.DynamicInvoke();     //通过遍历语句,把这些方法再一个个的实现
25             }
26
27             Console.ReadKey();
28         }
29     }
30
31 }

  匿名方法本质上还是一个方法,只是它没有名字,任何使用委托变量的地方都可以使用匿名方法赋值

  代码:

  

 1 namespace 委托
 2 {
 3     class Program
 4     {
 5             //匿名方法
 6
 7             Func<int, int> vae = delegate(int i)   //这是Func
 8             {
 9                 return i;
10             };
11             Console.WriteLine(vae(5));
12
13
14             Action a = delegate()                 //这是Action
15             {
16                 Console.WriteLine("哈哈哈哈哈哈");
17             };
18             a();
19
20
21             Console.ReadKey();
22         }
23     }
24
25 }

  Lambda表达式,作用就是为了简化匿名方法

  代码: 

 1 namespace Lambda表达式
 2 {
 3     class Program
 4     {
 5         static void Main(string[] args)
 6         {
 7             Func<int, int, int> dele = (lg1, lg2) =>  //=>这个符号是规范是必须写的,lambda表达式就是为了简化委托的匿名方法
 8             {
 9                 return lg1 + lg2;
10             };
11
12             Console.WriteLine(dele(8,5));
13
14             Func<int, int> dele = a => a+1;
15             Console.WriteLine(dele(5));
16             Console.ReadKey();
17         }
18     }
19 }
时间: 10-29

多播委托和匿名方法再加上Lambda表达式的相关文章

委托三------------多播委托与匿名方法

============================================多播委托 -------------------------------------主程序 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication3 {     class Pr

委托,匿名方法,Lambda,泛型委托,表达式树

一.委托:完成一个委托应分三个步骤://step01:首先用delegate定义一个委托;public delegate int CalculatorAdd(int x, int y);//step02:声明一个方法来对应委托.public int Add(int x, int y){ return x + y;}protected void FrmTest_Load(object sender, EventArgs e){ //step03:用这个方法来实例化这个委托. CalculatorA

五分钟重温C#委托,匿名方法,Lambda,泛型委托,表达式树

五分钟重温C#委托,匿名方法,Lambda,泛型委托,表达式树 https://masuit.com/81 曾经新生代,好多都经过漫长的学习,理解,实践才能掌握委托,表达式树这些应用.今天我尝试用简单的方法叙述一下,让大家在五分钟内看完这篇博客 第一分钟:委托 有些教材,博客说到委托都会提到事件,虽然事件是委托的一个实例,但是为了理解起来更简单,今天只谈委托不谈事件.先上一段代码: 下边的代码,完成了一个委托应用的演示.一个委托分三个步骤: 1 2 3 4 5 6 7 8 9 10 11 12

C# 匿名委托、匿名方法、匿名对象、Lambda表达式

一.匿名类型可通过使用 new 运算符和对象初始值创建匿名类型.示例:var v = new { Name = "Micro", Message = "Hello" };var v = new[] {     new { Name = "Micro", Message = "Hello" },     new { Name = "Soft", Message = "Wold!" }};匿

C#中分别对委托、匿名方法、Lambda表达式、Lambda表达式树以及反射执行同一方法的过程进行比较。

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Reflection; using System.Linq.Expressions; namespace INPEXOne.LearnCS { class RefletLambdaDelegate { static object[] para

委派与匿名方法演化至Lambda运算式

摘要:委派与匿名方法演化至Lambda运算式 一.委派 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; //委派是事件的基础 namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Program pg =

.net基础扫盲-小例子串委托、匿名方法、lamuda表达式

我把委托理解为:委托是一种方法的格式,当然他也是一种类型. 只要是方法的格式跟委托定义的格式是一样的,那么就可以把该方法附加给该委托.看以下demo 声明委托: <p style="margin:0in;font-family:微软雅黑;font-size:12.0pt"></p><pre name="code" class="csharp">public delegate void Add(int a,int

&lt;JAVA8新增内容&gt;关于匿名内部集合和lambda表达式

要想说清楚JAVA中的Lambda表达式,必须想讲一下匿名内部类来帮助理解本质. 一.匿名内部类 匿名内部类适合创建那种只需要一次使用的类,例如前面介绍命令模式时所需要的Command对象,匿名内部类的语法有点奇怪,创建匿名内部类时会立即创建一个该类的实例,这个类的定义立即消失,匿名内部类不能重复使用. 语法格式一般如下: new 实现接口() | 父类构造器 (实参列表){ //匿名内部类的类体部分 } 从上面可以看出,匿名内部类必须继承一个父类,或者实现一个接口,但最多只能继承一个父类,或者

Effective Java 第三版——43.方法引用优于lambda表达式

Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将近8年的时间,但随着Java 6,7,8,甚至9的发布,Java语言发生了深刻的变化. 在这里第一时间翻译成中文版.供大家学习分享之用. 43.方法引用优于lambda表达式 lambda优于匿名类的主要优点是它更简洁.Java提供了一种生成函数对象的方法,比lambda还要简洁,那就是:方法引用( meth